gpt4 book ai didi

c++ - new 在堆栈而不是堆上(如 alloca 与 malloc)

转载 作者:IT老高 更新时间:2023-10-28 22:23:28 26 4
gpt4 key购买 nike

有没有办法使用 new 关键字在堆栈上分配(ala alloca)而不是堆上(malloc)?

我知道我可以自己破解,但我不想这样做。

最佳答案

要在堆栈上分配,要么将你的对象声明为局部变量按值,或者你可以实际使用 alloca 获取指针,然后使用就地 new 运算符:

void *p = alloca(sizeof(Whatever));
new (p) Whatever(constructorArguments);

但是,虽然使用 alloca 和 in-place new 可确保在返回时释放内存,但您放弃了自动析构函数调用。如果您只是想确保在退出范围时释放内存,请考虑使用 std::auto_ptr<T>或其他一些智能指针类型。

关于c++ - new 在堆栈而不是堆上(如 alloca 与 malloc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com