我有一个hashfactory,它返回一个动态分配的对象。
Item * Class::foo()
{
int subscript = hash(someKey);
return factory[subscript]->create();
}
//function create() is an overridden function in an inherited class that returns Item *
Item *SomeClass::create()
{
return new SomeClass();
}
为了让我没有内存泄漏,我是否必须确保每个触及此指针的指针最终都被赋值为NULL,并且跟踪它的最终指针被删除然后设置为NULL?
答案 0 :(得分:2)
这取决于。
如果这是您自己项目中的自己的类,确实负责删除您调用create()(或foo)分配的内存())。
如果这是您创建的库类,并且已记录,那么库代码的调用者将负责删除通过调用foo()创建的内存。
无论哪种方式,您都必须直接设置并记录或实施适当的内存管理。