【发布时间】:2018-05-28 12:22:14
【问题描述】:
在我的 c++ 程序中,我有这个变量:
std::list<std::pair<MyClass,MyClass>*>* myList =
new std::list<std::pair<MyClass,MyClass> * >()
如何正确删除此结构的所有信息以避免内存泄漏?我想在这种模式下做:
list<pair<MyClass,MyClass>*>::iterator it;
for(it = myList->begin(); it != myList->end(); it++){
delete *it;
}
delete myList;
这是一个正确的方法吗?
【问题讨论】:
-
我的第一个建议是不要一开始就使用这么多指针。没有指针,没有
new或new[],也不需要delete或delete[]。除非您有非常具体的要求,否则请使用std::vector而不是std:list。 -
如果你习惯了Java,你需要改掉输入
new来创建对象的习惯。常见的 C++ 方法是使用std::vector<std::pair<MyClass, MyClass>> myList;而不必担心。 -
如果列表拥有对象,它应该包含对象而不是指针,如果它不拥有,那么它不应该打扰删除它们
标签: c++ c++11 memory-management memory-leaks