nik*_*hli 4 c++ memory memory-leaks new-operator delete-operator
我正在编写全局删除/新运算符的调试版本来检测内存泄漏,双重删除和删除未分配的内存.
就"新"运算符而言,我覆盖全局新运算符并使用宏传递文件名和行号信息.重写的"new"运算符将地址中的内存地址,文件名,大小和行号信息存储在地址中.
我也覆盖了"删除"操作符,从地图中删除了已删除的地址'条目.现在我想将已删除的内存信息存储在另一个映射中,该映射存储调用"delete"的文件名和行号信息.
但是delete运算符只接受参数(要删除的对象的内存地址).有人可以告诉如何检测代码中的双删除吗?
您已经在重载内创建了已分配内存地址(键)和文件名,行号(值字段)的映射new.
在重载删除时,只需检查您创建的地图中是否存在传递的地址.
如果是,您认为该呼叫delete有效并从地图中删除该地址条目.
如果否,则认为删除调用有问题,delete called on a pointer not allocated through your new或者trying to call delete multiple times.