这可能是一个愚蠢的问题,但我不确定答案。以下代码读取一个文件,并为文件的每一行创建一个智能指针,如果将来会使用该智能指针,则将其存储在列表中,否则不存储。
我的问题是:如果未存储智能指针,是否会导致潜在的内存泄漏?谢谢。
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);
}
.....;
}
aPtr.reset();
。但是您很少需要这样做;通常情况下,当智能指针应该引用另一个对象时才使用它:aPtr.reset(new SomeClass("Another Object"));
- MSalters