首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型C/C++项目的内存快照(Windows/Unix)

大型C/C++项目的内存快照(Windows/Unix)
EN

Stack Overflow用户
提问于 2009-08-12 10:27:57
回答 2查看 2.6K关注 0票数 2

其中一些是用C语言编写的,一些是C++,还有一些是两者的混合体。所有项目的代码总和约为600,000行。

有了堆,我可以尝试重载所有项目中的所有“malloc/free”和“new/delete”,并以这种方式跟踪它,但对于这种规模的应用程序来说,这是相当令人生畏的。

此外,这也不会拾取项目周围散落的所有静态全局数据。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2009-08-12 10:34:15

你可以试一试valgrind。下面是对其中一个工具的引用:

地块

Massif是一个堆分析器。它通过定期拍摄程序堆的快照来执行详细的堆分析。它会生成一个图表,显示一段时间内堆的使用情况,包括有关程序的哪些部分负责最多内存分配的信息。该图由一个文本或HTML文件补充,该文件包含更多信息,用于确定内存分配最多的位置。Massif运行程序的速度比正常情况下慢20倍。

它现在支持Linux,但如果在Linux上进行分析并将结果应用到Windows版本对您有效,这可能会对您有所帮助。

票数 6
EN

Stack Overflow用户

发布于 2009-08-12 10:32:51

如果您正在使用ELF二进制文件,您可以在链接elf分析器之前检查目标文件"*.o“,并查看静态内存区有多大,以及bss(未初始化的静态数据)加载后的大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1265389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档