4

OS X 'heap' 命令行实用程序显然可以枚举不同的 malloc 区域和任何正在运行的进程的各个 malloc 块。它不需要链接任何特殊的调试库或为目标进程设置任何调试堆环境变量。

它使用哪种底层机制来做到这一点?我能找到的所有 malloc 调试 API 都需要在进程内部设置挂钩、链接的特殊调试库或在启动进程之前设置调试环境变量。据我所知,该实用程序的源代码不可用,并且在 Google 和 Apple.com 上进行的多次搜索也没有发现任何有用的信息。

我最感兴趣的是获得实际的 malloc'ed 内存总和,因为进程的常驻大小通常会比应用程序代码实际请求的内存大得多。

谢谢!

4

1 回答 1

1

他们使用在/usr/include/malloc/malloc.h. 每个 malloc 区域都包含一个指向malloc_introspection_t结构的指针,该结构公开了一个enumerator函数,该函数可用于发现 malloc 区域保留的内存区域,以及这些区域内所有单独分配的详细信息。

于 2013-04-23T07:33:07.070 回答