我有一个返回动态分配对象的哈希工厂。
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?
最佳答案
这取决于。
如果这是您自己项目中的类,您确实负责删除您调用 create()(或 foo)分配的内存()).
如果这是您创建的库类,并且您已将其记录得足够好,则库代码的调用者将负责用于删除调用 foo() 创建的内存。
无论采用哪种方式,您都必须把事情弄清楚,要么记录下来,要么实现适当的内存管理。
关于c++ - 跟踪哈希工厂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8423435/