为什么将对象指针传递给方法并在方法中删除它与直接删除对象不同
Why passing an object pointer to a method, where it is deleted, is different from deleting the object directly?
导致一个块泄漏的代码如下:
<>之前in = new RandomAccessFile(fileName, "r");在- - - - - -> close ();Mem: delObject(的);之前其中RandomAccessFile
为具有string
字段的类,delObject()
为静态方法,如下所示:
泄漏块为string
。
如果我用直接的delete
替换delObject
方法:
泄漏消失了。如果方法没有被替换,而是被移除:
<>之前in = new RandomAccessFile(fileName, "r");在- - - - - -> close ();//Mem: delObject(的);//删除(在);之前有两个泄漏块。我猜是字段和包含它的对象。
那么:为什么这两种删除对象的方式行为不同?
我只能猜测,但似乎你忘记了对象类中的虚拟析构函数。因此,调用RandomAccessFile析构函数不会导致其属性泄漏。
相关文章:
- 使用std::函数映射对象方法
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 有没有一种方法可以使用placement new将堆叠对象分配给分配的内存
- 从父类方法返回子类对象
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 为什么此派生对象无法访问基类的后递减方法?
- c++, 在子类中,如何在没有对象的情况下访问父类的方法?
- 正在调用shared_ptr对象方法
- 将方法转换为调用该方法的成员函子对象会导致崩溃
- 检查哪个对象调用了另一个对象的对象方法
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 直接在 unordered_map 的方法中使用哈希,而不是生成哈希的用户定义对象
- 没有取消引用/解包对象的标准方法?
- 使用 gmock c++ 在真实对象上调用方法
- 当我调用对象的方法时,对象的成员会发生变化
- 根据对象类调用不同的方法
- 如何在C++中循环访问未知对象方法?
- 使用动态实例化的对象填充矢量的快速方法
- 对类中的对象使用方法