EXP*_*XP0 5 c++ smart-pointers
这可能是一个愚蠢的问题,但我只是不确定答案.以下代码读取文件,对于文件的每一行,由"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);
}
.....;
}
Run Code Online (Sandbox Code Playgroud)
只要您使用智能指针的副本存储它,就不会泄漏内存.当aPtr对象从堆栈中掉落时(在每个while循环执行结束时),它将被销毁.如果它是分配对象的唯一持有者,它将删除它.但是如果你存储了aPtr其他地方的副本,那么它不是分配对象的唯一持有者,也不会删除它.
| 归档时间: |
|
| 查看次数: |
11708 次 |
| 最近记录: |