gpt4 book ai didi

c++ - 取消引用 `new` 指针是否被认为是好的风格?

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

为了避免继续使用 -> 而是直接使用对象,是否可以这样做:

obj x = *(new obj(...));
...
delete &obj;

最佳答案

这不仅是糟糕的做法,而且:

  1. 内存泄漏(很可能,除非您使用的模式在您提供的代码中不可见),因为 obj 将存储原始对象的 拷贝new 表达式创建,而 new 返回的指向该对象的指针丢失;
  2. 最重要的是,未定义的行为,因为您正在向 delete 传递一个指向未使用 new 分配的对象的指针。根据 C++11 标准的第 5.3.5/2 段:

[...] In the first alternative (delete object), the value of the operand of delete may be a null pointer value, a pointer to a non-array object created by a previous new-expression, or a pointer to a subobject (1.8) representing a base class of such an object (Clause 10). If not, the behavior is undefined.

关于c++ - 取消引用 `new` 指针是否被认为是好的风格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16527829/

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