我刚刚开始接触 Valgrinds massif 工具,想知道是否可以引入一个检查点来开始监视堆分配。
考虑以下基本示例:
#include <iostream>
int main()
{
int nrOfElements= 10;
uint32_t *a[nrOfElements];
for(int i=0; i<nrOfElements; i++)
{
a[i] = new uint32_t(i);
}
return 0;
}
编译它,运行 valgrind (valgrind --tool=massif --time-unit=B ./program) 并执行 ms_print Massif.out.3***** 返回以下内存表:
在这里我们可以看到,标准库分配了 72,704 字节的初始堆内存。由于我只对从主程序开始的内存分配感兴趣,我想知道我该如何做到这一点? 是否有类似检查点的东西,可以引入它来仅监视某个区域的内存分配?
Massif 没有打开和关闭仪器的机制。
查看
--ignore-fn=
选项,特别是针对您的示例 --ignore-fn=call_init.part.0
。您可以重复使用此选项来过滤掉多个函数。