gpt4 book ai didi

c++ - "placement new"优势场景

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

<分区>

我有两个使用new运算符分配内存的案例。

class xx{
public: int x;
xx(){}
~xx(){}
};
class yy : public xx {
public: int y;
yy(){}
~yy(){}
};
int main(int argc, char *argv[])
{
yy *y1 = new yy(); //y1 constructor is called
//CASE-1
yy *y2 = y1;
//CASE-2
yy *y3 = new (y1) yy();
return 0;
}

在 CASE-1 中,我只是在不破坏 y1(浅拷贝)的情况下将 y1 内存分配给 y2。这里构造函数不会被调用。

在 CASE-2 中,我将 y1 内存分配给 y3 到破坏 y1 的地址。这里将调用 y3 的构造函数。但是不调用 y1 的析构函数。据我了解,在以后的代码中使用 y1 和 y2 时,应用程序必须采取空值检查预防措施。

所以基本上我想了解 CASE-2 与 CASE-1 相比在哪些情况下有用。提前致谢。

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