gpt4 book ai didi

c++ - 重建堆栈对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:07:54 25 4
gpt4 key购买 nike

嗯,我知道这听起来很邪恶。我在读this SO post并偶然发现了重建堆栈对象的技术。基本思想是:

{
T obj(...); // dtor will be called at end of scope
obj.~T(); // YOLO

new (&obj) T(...);
// obj goes out of scope. The compiler inserts `obj.~T();` here.
}

...这样我们就可以根据需要多次重复使用同一 block 内存。这段代码符合标准吗?疯狂就是这种未定义的行为吗?

最佳答案

此结构适用 placement new . See also .它是标准的 C++自第一个标准以来。它早于第一个标准并被引入核心语言因为它的 usefulness .所以不是“疯狂”自然不是 UB 本身。您当然可能会不小心在混凝土中引发 UB 或其他内存错误安置新的应用程序。与提供的所有原始内存管理设施一样通过语言,现在最好留给标准库的实现者和 3rd 方库,它们提示我们需要与其争论风险。

关于c++ - 重建堆栈对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647437/

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