Как интерпретировать вывод 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)

Как прочитать это сообщение?

Строка 374 main.cpp гласит:

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

Утечка памяти точно в строке 374 main.cpp? Это просочилось в compute() или может быть при присваивании / индексации в результатах?

1 ответ

Решение

Утечка памяти точно в строке 374 main.cpp?

Нет, он просто показывает номер строки в main где был сделан вызов, что в конечном итоге приводит к функции и линии, где была выделена память.

Это просочилось в compute() или может быть при присваивании / индексации в результатах?

Это говорит о том, что память была выделена в compute() но не было освобождено в программе до выхода из программы. Это то, что составляет утечку памяти.

Другие вопросы по тегам