有哪些好的工具可以用来分析内存(占用空间,分配和释放)?我熟悉valgrind。如果除此之外还有其他工具,希望能了解一下。
谢谢。
IBM有Rational Purify适用于Windows和Linux。我没有使用过它,因为它相当昂贵,但是有免费试用版可用。
如果你在谈论valgrind,我想你可能对Linux软件感兴趣。
您可以使用MTrace轻松构建自定义报告以进行脚印分配和释放。它不是直接用于C ++,而是直接集成到GlibC中。据我所知,C++的new和delete运算符在调用构造函数前使用此功能来分配内存,并在调用析构函数后释放内存。
mcheck 的好处在于每当您使用 glibc 时,它会自动为您配置。将环境变量 MALLOC_CHECK_ 设置为 1,每次检测到堆不一致时都会在 stderr 上打印出诊断信息;如果设置为 2,则会立即调用 abort()。
有关 mcheck 的文档在这里:
http://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.html
您还可以使用 mtrace 对 malloc 进行详细跟踪:
http://www.gnu.org/software/libc/manual/html_node/Allocation-Debugging.html