作为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;
}
但是当我运行它时,除非我注释掉
delete
行,否则myvector返回空。我究竟做错了什么?
最佳答案
如前所述,释放内存后,您将无法访问或更改内存。您必须注意在析构函数中删除对象(或其他函数)。这是一个可以做到的片段:
// this function adds the object
`void MyClass1::AddFun()
{
myClass2* Ptr = new myClass2(); // create new object via new-operator
myvector.push_back(Ptr);
}
// this function clears the entire vector
void MyClass1::ClearAllContent()
{
while (myvector.empty() == false)
{
delete myvector[myvectory.size() - 1]; // free the last object in your vector
myvector.pop_back(); // pop_back reomves the "empty"-pointer
}
}
关于c++ - 正确使用新的/删除的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7107330/