【发布时间】:2013-01-04 03:17:54
【问题描述】:
我只想知道这是否会正确释放数据。
伪代码:
std::map<std::string, ClassPointer*>::iterator tempIterator;
for(tempIterator = directory.begin(); tempIterator < directory.end;
tempIterator++)
delete &tempIterator;
【问题讨论】:
-
我认为您不需要 & 因为迭代器已经是指向地址位置的指针。如果我错了,请纠正我。
-
这可以通过使用 valgrind 来验证。如果您在 memcheck 应用程序中运行您的 C++ 代码,它应该能够告诉您是否所有内存都已正确释放。
-
@Ben 和 OP 应该是
delete *tempIterator。 -
@SethCarnegie 容器是地图,应该是
delete tempIterator->second? -
@SethCarnegie 我试过了,结果出错了。 &tempIterator 从来没有给我一个错误。无论如何,我认为我通过删除 tempIterator->second 解决了答案。
标签: c++ memory iterator memory-leaks allocation