Memcheck — неизвестный исходный модуль для утечки памяти

Я начинаю с C ++ и использую memcheck для проверки моих программ на утечки памяти.

Если (когда …) есть утечки, я получаю Unfreed memory allocations remaining выход, который использует new, malloc и т.д., которые не были освобождены. Они обычно сопровождаются исходным файлом и номером строки размещения, что позволяет легко исправить.

Иногда, хотя исходный модуль указан как unknown line:0, для звонков на new в моем случае. Если memcheck знает вызов new было сделано, как получается, что он не может сказать, откуда это взялось? Я просто пытаюсь обдумать это, чтобы иметь представление о том, откуда эти утечки.

0

Решение

Я полагаю, что он просто не может правильно решить трассировку стека. Это случается с такими инструментами (VLD, Deleaker и т. Д.), Когда они либо пытаются разрешить трассировку стека в быстром режиме (например, чтение EBP / ESP на x86), а указатели фреймов пропустили, либо когда они пытаются разрешить трассировку стека, используя отладочную информацию, и это информация неверна или просто отсутствует.

В большинстве случаев трассировка стека может быть разрешена правильно. Иногда — нет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]