如何解释Valgrind输出

时间:2015-06-03 21:31:14

标签: c++ memory-leaks valgrind

Valgrind产生以下消息块:

1,065,024 bytes in 66,564 blocks are definitely lost in loss record 21 of 27
   at 0x4C2B800: operator new[](unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
   by 0x40CA21: compute(Parameters&, Array<double>&) [clone .constprop.71] (array.hpp:135)
   by 0x403E70: main (main.cpp:374)

如何阅读此邮件?

main.cpp第374行读取:

results[index] = compute(parameters, weights);

内存是否完全泄露在main.cpp的第374行?它是在compute()中泄露还是在赋值/索引到结果中?

1 个答案:

答案 0 :(得分:2)

  

内存是否完全泄露在main.cpp的第374行?

没有。它只显示调用所在的main中的行号,最终导致分配内存的函数和行。

  

它是在compute()中泄露还是在赋值/索引到结果中?

它表示内存是在compute()中分配的,但在程序退出之前未在程序中解除分配。这就构成了内存泄漏的原因。