其中一些是用C语言编写的,一些是C++,还有一些是两者的混合体。所有项目的代码总和约为600,000行。
有了堆,我可以尝试重载所有项目中的所有“malloc/free”和“new/delete”,并以这种方式跟踪它,但对于这种规模的应用程序来说,这是相当令人生畏的。
此外,这也不会拾取项目周围散落的所有静态全局数据。
谢谢你的帮助。
发布于 2009-08-12 10:34:15
你可以试一试valgrind。下面是对其中一个工具的引用:
地块
Massif是一个堆分析器。它通过定期拍摄程序堆的快照来执行详细的堆分析。它会生成一个图表,显示一段时间内堆的使用情况,包括有关程序的哪些部分负责最多内存分配的信息。该图由一个文本或HTML文件补充,该文件包含更多信息,用于确定内存分配最多的位置。Massif运行程序的速度比正常情况下慢20倍。
它现在支持Linux,但如果在Linux上进行分析并将结果应用到Windows版本对您有效,这可能会对您有所帮助。
发布于 2009-08-12 10:32:51
如果您正在使用ELF二进制文件,您可以在链接elf分析器之前检查目标文件"*.o“,并查看静态内存区有多大,以及bss(未初始化的静态数据)加载后的大小。
https://stackoverflow.com/questions/1265389
复制相似问题