c++ - 跟踪哈希工厂对象

标签 c++ memory-leaks hash

我有一个返回动态分配对象的哈希工厂。

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. 如果这是您自己项目中的类,确实负责删除您调用 create()(或 foo)分配的内存()).

  2. 如果这是您创建的库类,并且您已将其记录得足够好,则库代码的调用者负责用于删除调用 foo() 创建的内存

无论采用哪种方式,您都必须把事情弄清楚,要么记录下来,要么实现适当的内存管理。

关于c++ - 跟踪哈希工厂对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8423435/

相关文章:

hash - 为什么Hash函数除法只用素数

尽管包含 header ,但 C++ 成员访问不完整类型

c++ - 手动添加 vector 异常处理程序

c++ - 如何在opencv中从任何角度检测字母 "E"

objective-c - 潜在泄漏,将 NSString-Property 分配给 UILabel

c++ - 将值添加到单独链接的哈希表 C++

c++ - 类的对象何时分配动态内存?

go - For range 循环变量通过引用传递给 go 例程会导致内存泄漏

objective-c - 退出应用程序时dealloc方法是否正常执行?

arrays - 使用 Ruby 进行数组到哈希