我被要求优化 c++ 项目,我在类代码中遇到了这种“内存泄漏”情况(示例简化但主要问题很清楚):
std::list<T*> _list;
void func(){
T* obj = some_func();
if (!obj){
obj = new T();
_list.push_back(obj); // Here is a leak,we do not know when *obj will be removed from _list to call its destructor
}
obj->some_field = some_value;
}
/*_list will be used and managed somewhere else
and we do not know actually when, where and how.*/
那么如何优雅地解决这个问题呢?优雅地我的意思是没有定义我自己的容器。我需要使用一些智能指针吗?
更新。这不是 C++ 11。所以没有花哨有用的东西