如何在C++中枚举所有已分配的对象(由new运算符分配)(不仅是那些具有自己的内存映射的对象,还包括堆中的那些对象?)?枚举分配的对象
我需要这个来查找内存泄漏。
平台:Linux,GCC,I386,AMD_K64(最好:独立平台)
可能没有正式的方式,但也有可能是一个精干的解决方法。 例如,是否有一些内部变量可以访问?也许一个指向用于管理堆的列表的指针?
如何在C++中枚举所有已分配的对象(由new运算符分配)(不仅是那些具有自己的内存映射的对象,还包括堆中的那些对象?)?枚举分配的对象
我需要这个来查找内存泄漏。
平台:Linux,GCC,I386,AMD_K64(最好:独立平台)
可能没有正式的方式,但也有可能是一个精干的解决方法。 例如,是否有一些内部变量可以访问?也许一个指向用于管理堆的列表的指针?
你总是可以使用valgrind来检查内存泄漏。无论是与你的包管理器安装它,还是下载并编译:http://valgrind.org/
如果您编译在调试模式下您的应用程序可以找出下来到已分配的未释放/删除资源文件/线。
等待! Quote:地块运行程序比正常慢20倍。我无法定期将其添加到我的程序中。 – Ohnemichel
您可以使用的valgrind它不正是你想要的(与它自己的实现替代的malloc)和计数分配/释放
从理论上讲,它会造成太多的开销。顺便说一句。没有使用valgrind的反射使用massif.h。漂亮的工具,但没有办法在我的程序中添加功能,例如“让指针指向第n个实例...” – Ohnemichel
有可能两种形式的记忆丧失
我敢肯定还有更多的工具。这些很受欢迎。
在Solaris中,我建议libumem用于Sun Studio中的泄漏跟踪和分析器,以进行分析和内存分析。
我不能使用任何这种功能。我无法从观察过程中找到一种方法(访问内部地块录音)。Valgrind增加了一个巨大的新依赖项,扰乱了程序的身份,甚至可能引入内存泄漏。 – Ohnemichel
[massif](http://valgrind.org/info/tools.html#massif) – jsantander
你要求的只是检测器的怪物卡车上的轮胎。为什么不使用众多现有产品之一? – delnan
因为我想构建摩托车:)它应该为用户提供查找视图,而不会在程序中加入太多的权重,以便在程序失败时发现他自己正在发生的事情。但是,现在,我正在尝试地块,其中我不知道它劫持了malloc函数(并且我不知道是否有任何新的调用malloc) – Ohnemichel