Он не может сказать вам имя указателя, потому что вся идея утечки памяти состоит в том, что указатель no больше не указывает на память (по крайней мере, для тех утечек, которые Valgrindописывает как «определенно потерян» ).
Что он может сказать вам, это исходный файл и номер строки, где была выделена память - тогда вам нужно будет посмотретьвверх по этой строке в вашем источнике, чтобы выяснить, где память предполагается для освобождения.Например, если запись о потере Valgrind выглядит следующим образом:
==17110== 49 bytes in 1 blocks are definitely lost in loss record 17 of 35
==17110== at 0x4023D6E: malloc (vg_replace_malloc.c:207)
==17110== by 0x80C4CF8: do_foo (foo.c:1161)
==17110== by 0x80AE325: xyzzy (bar.c:466)
==17110== by 0x8097C46: io (bar.c:950)
==17110== by 0x8098163: main (quux.c:1291)
Тогда вам нужно взглянуть на строку 1161 в foo.c
, которая находится внутри функции do_foo()
.Вот где была выделена память (с malloc()
), и только вы можете сказать, где она должна была быть освобождена.