Плагины авторизации для RoR с поддержкой Rails 3 [закрыто]

1
задан Cœur 5 March 2017 в 06:55
поделиться

2 ответа

Он не может сказать вам имя указателя, потому что вся идея утечки памяти заключается в том, что ни один указатель больше не указывает на память ( по крайней мере, для тех утечек, которые Валгринд описывает как «определенно потерянные» ).

Что он может сообщить вам, так это исходный файл и номер строки, в которой была выделена память. Затем вам нужно будет найти эту строку в исходном коде, чтобы выяснить, где память предполагается для освобождения. Например, если запись о потерях 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()), и только вы можете сказать, где она должна была быть освобождена.

1
ответ дан 2 September 2019 в 21:45
поделиться

Вы не сказали, какой компилятор вы используете, я полагаю, gcc? Используете ли вы -g для включения символов отладки?

1
ответ дан 2 September 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: