【发布时间】:2011-10-04 19:17:02
【问题描述】:
这可能是一个愚蠢的问题,但我不确定答案。下面的代码读取一个文件,并且对于文件的每一行,“new”都会创建一个智能指针。如果将来要使用智能指针,则将其存储在列表中,否则不存储。
我的问题是:如果不存储智能指针,会导致潜在的内存泄漏吗?谢谢。
int main(){
.....;
std::list<SomeClass> aList;
while(inFile >> ss){
std::tr1::shared_ptr<SomeClass> aPtr(new SomeClass());
//do something in foo(aPtr) to aPtr,
//if aPtr will be used later, then it's stored in aList
//otherwise, it's not stored
foo(aPtr);
}
.....;
}
【问题讨论】:
-
“删除”一词无论如何都是不幸的。对于智能指针,该操作称为
reset。 IE。在这种情况下,你可以写aPtr.reset();。但是你很少需要这个;通常当智能指针应该引用另一个对象时使用它:aPtr.reset(new SomeClass("Another Object"));
标签: c++ smart-pointers