c++ - 正确使用new/delete

标签 c++

作为我的 previous question 的续集,我想问一下我在下面的代码中做错了什么。

代码是,例如

void myclass1::myfun()
{
myclass2* newVar = new myclass2();
/* other code and stuff */
myvector.push_back(newVar); // myvector is a member of myclass1 and is a std::vector<myclass2*>
delete newVar;
}

但是当我运行它时,myvector 返回空,除非我注释掉 delete 行。

我做错了什么?

最佳答案

您只想在完全使用完对象后将其删除。删除后,您不应尝试再次引用它。

在典型情况下,您只想将对象本身(而不是指向对象的指针)放入 vector 中。这将在您将对象添加到 vector 时创建对象的拷贝,并在您从 vector 中删除对象或 vector 本身被销毁时自动销毁该对象。

关于c++ - 正确使用new/delete,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7107330/

相关文章:

c++派生带有嵌套结构的纯抽象

c++ - 如何防止阻塞路径?

c++ - 服务器程序处于无限循环中。如何检查?

c++ - 没有扩展名的Linux可执行文件的共享库(.so)之间的区别?

c++ - 删除 std::map (Visual C++)

C++ 类到 Void 指针,数据丢失?

c++ - 桌面和移动之间的可移植 gpgpu 工具

c++ - 为什么 make_unique 有一个可以将 std::bind 作为参数的构造函数的额外移动?

c++ - 内存将由空格分隔的 float 文本文件映射到 float vector

c++ - 使用计时器和信号而不是 sleep c/c++