作为我的 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/