是否允许显式调用析构函数,然后在具有固定生存期的变量上放置新?
作者:yeputons 提问时间:3/5/2017
我知道显式调用析构函数可能会导致由于双重析构函数调用而导致未定义的行为,如下所示: #include <vector> int main() { std::vector<int> foo(10)...
放置 - 新 问答列表
作者:yeputons 提问时间:3/5/2017
我知道显式调用析构函数可能会导致由于双重析构函数调用而导致未定义的行为,如下所示: #include <vector> int main() { std::vector<int> foo(10)...
作者:blonded04 提问时间:3/2/2023
当我尝试操纵时,地址消毒器会发疯:std::vector<std::aligned_storage<sizeof(T), alignof(T)>> vec 有时,在向量元素处放置新位置效果很好,除非...
作者:Dov 提问时间:4/28/2023
以下代码使用 placement new 来移动每个值。 复制构造函数和运算符 = 已被删除,因此分配新内存和复制旧内存的唯一位置是在 add 函数中。 #include <iostream> #i...
作者:Yousef Irshaid 提问时间:5/22/2023
当我们创建一个类类型的动态数组时,我正在研究这种情况。据我所知,在直接调用类的非默认构造函数时,没有创建数组的方法。一种方法是正常初始化数组,然后循环并为每个对象调用非默认构造函数,但我认为这种方法存...
作者:akanesora 提问时间:7/6/2023
T *p = ::operator new(sizeof(T)); new (p) T; 我想知道该语法是如何工作的,因为放置 new 被声明为: void* operator new(std:...
作者:Patrick Fromberg 提问时间:7/22/2023
我有一些代码几乎什么都不做,但它以一种复杂的方式这样做。最重要的是,它不分配任何东西。所有数据都在堆栈上。它适用于许多版本的 gcc 和 clang,无论是在我的计算机上还是在 Godbolds 编译...