【发布时间】:2015-04-27 17:07:42
【问题描述】:
我想在我的程序中计算内存分配调用(malloc、calloc、new ...)的数量。该程序积极使用 STL 容器。 主要目的是计算所有这些容器内的内存分配。稍后我将使用这些信息来优化性能。 我的程序是用 C++ 编写的,在 Linux 下运行。有什么工具可以做到吗?
【问题讨论】:
-
你看过 valgrind 吗?
-
如果您只想计算分配的字节总数,可以使用 valgrind。如果您想计算
malloc调用的数量,那么最简单的方法是为其编写一个包装器 - 请参阅this question。 -
This page 有一个有用的示例(特定于
glibc),每次调用malloc时都会打印出信息。您可以使用类似的代码来增加一个全局计数器。 -
你有什么内核版本/glibc 版本/发行版?我建议您尝试SystemTap,但它需要 glibc debuginfo 和内核 3.5+(最低版本的 rhel 内核可能有特殊补丁)。
-
我查看了 valgrind。它似乎只显示分配的字节总数。但也许有一些特定的工具可以显示位置的数量。
标签: c++ linux memory-management