跟踪哈希工厂对象

时间:2011-12-07 22:20:43

标签: c++ memory-leaks hash

我有一个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?

1 个答案:

答案 0 :(得分:2)

这取决于。

  1. 如果这是您自己项目中的自己的类确实负责删除您调用create()(或foo)分配的内存())。

  2. 如果这是您创建的库类,并且已记录,那么库代码的调用者负责删除通过调用foo()创建的内存

  3. 无论哪种方式,您都必须直接设置并记录或实施适当的内存管理。