是否允许显式调用析构函数,然后在具有固定生存期的变量上放置新?
作者: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)...
作者:Luchian Grigore 提问时间:7/31/2012
假设我有以下内容: struct A { int x; }; //... A* aOriginal = new A(); //value construct aOriginal assert( ...
作者:L. F. 提问时间:8/18/2019
在泛型代码中使用 placement new 在指定地址构造对象时,使用模式与通常的代码略有不同。例如,请考虑以下实现:([uninitialized.copy]uninitialized_copy)...
作者:meaning-matters 提问时间:8/14/2013
我的用户在 iOS 应用中输入一些信息字段。 此信息必须在我的服务器上进行验证,该服务器具有 RESTful API。 验证后,iOS 应用的 UI 将更改以指示结果。 GET、PUT 或 POST...
作者:blonded04 提问时间:3/2/2023
当我尝试操纵时,地址消毒器会发疯:std::vector<std::aligned_storage<sizeof(T), alignof(T)>> vec 有时,在向量元素处放置新位置效果很好,除非...
作者:HCSF 提问时间:3/27/2023
我有以下代码: struct SomeStruct2 { // has 4 primitive types of variables }; struct SomeStruct1 { // ha...
作者: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 编译...