取消运算符delete[]中的析构函数调用
cancel destructor calls in operator delete[]
我正在编写一个内存泄漏检测器,它创建了一个带有一些警告的文本文件。例如,当使用delete
而不是delete[]
来释放使用new[]
分配的内存时,它会生成警告。
当在用new
创建的对象上使用delete[]
时,我发现困难是相同的,反之亦然。在这种情况下,析构函数是为许多从未构造过的对象调用的。
以下是c++参考中的内容:
delete[]是一个具有特定行为的运算符:表达式使用delete[]运算符,首先调用相应的析构函数对于数组中的每个元素(如果这些元素属于类类型)。。。
我的问题是,我能做点什么吗?为尚未实际创建的对象调用析构函数通常会导致segfault。我想以某种方式"捕捉"它,取消对数组的删除并创建一个警告。
编辑:我似乎无能为力。查看了另一块板,得到了使用内存分配器的建议,这对我的内存泄漏检测器来说太过分了,和/或研究valgrind是如何工作的。我可能会做后者。
您可能什么都做不了,因为如果客户端代码调用delete
,当运算符new为new []
时,您可能不会在delete运算符中收到相同的地址。
相关文章:
- 析构函数调用
- 在具有向量的类构造函数中进行析构函数调用
- 从 c++ 中派生类的析构函数调用虚函数
- C++析构函数调用两次,堆栈分配的复合对象
- C++ 在析构函数调用之前删除的动态成员数组
- 析构函数调用c++中的一个向量
- Singleton模式中的手动析构函数调用:调用多次
- 从内部类的析构函数调用虚拟函数
- 与 boost odeint 集成期间的析构函数调用
- 堆栈展开如何与析构函数调用有关?
- C++:优化析构函数调用
- 以逗号分隔的表达式中的析构函数调用
- GCC 9.1 返回 void& 作为显式析构函数调用的结果类型。这是一个错误吗?
- 从C++中的虚拟析构函数调用虚拟方法
- 从指针返回对象时出现意外的析构函数调用
- 使用 decltype 显式析构函数调用
- C++析构函数调用了错误的对象
- 了解虚拟函数和析构函数调用
- 多重继承析构函数调用他自己和父析构函数?c++
- 析构函数调用表单不适当的库