使用valgrind在两点之间泄漏

时间:2011-04-08 07:24:13

标签: memory memory-leaks valgrind

我正在使用valgrind来查找和跟踪内存问题。现在我想做这样的事情:

before = getValgrindState();
do_something_curious();
after = getValgrindState();
difference = after - before;
std::cout << difference;

valgrind可以这样吗?

MS Visual C ++运行时提供以下功能:

  • _CrtMemCheckpoint(收集已分配内存的当前状态)
  • _CrtMemDifference(计算两种状态之间的差异)

我想知道是否有办法用valgrind实现类似的功能。

2 个答案:

答案 0 :(得分:1)

执行所需操作的原始/破坏性方法是使用_exit()(注意下划线)以避免调用任何析构函数。

  • 针对在_exit()之前调用do_something_curious();的代码运行valgrind / memcheck
  • _exit()
  • 之后使用do_something_curious();再次运行valgrind / memcheck
  • 比较结果,看看do_something_curious()留下了什么。

[我无法弄清楚地块将如何做你想做的事情(有没有办法让地块跟踪free / delete操作并与malloc / {协调{1}}我错过了哪些操作?)]

答案 1 :(得分:0)

你想测量什么?什么是“差异”应该是什么?如果要检查内存使用情况,请尝试使用valgrind的massif toolMassif Visualizer对于解释结果非常有用。