Как обнаружить утечку памяти в моем программном обеспечении Qt от Valgrind или других инструментов? - PullRequest
1 голос
/ 10 сентября 2011

Я разработал библиотеку с Qt / C ++, и теперь я хочу быть уверен в тестировании утечки памяти,

Я нашел Valgrind и, кажется, хороший детектор (я все еще не работаю с ним), но есть ли другой инструмент (ы) для тестирования на утечку памяти?

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Да, как указал Алс в комментарии и из моего личного опыта, я бы также рекомендовал использовать Valgrind.Существуют различные варианты, такие как --leak-check=yes и т. Д., Которые вы можете использовать.После того, как вы запустите valgrind, он выдаст несколько рекомендуемых опций, которые вы можете включить в следующий запуск.

Проблема, которую пытается решить Valgrind, т. Е. Обнаружение утечек памяти, является сложной проблемой.Иногда valgrind запутывается и выдает ложные срабатывания, т. Е. Показывает утечку памяти в месте, где ее нет.Но, кроме этого, valgrind довольно удобен и полезен.

0 голосов
/ 10 сентября 2011

Вы можете самостоятельно проверить утечку памяти без особых дополнительных усилий (в зависимости от вашего кода).Просто предоставьте свои версии операторов новым и удалите.Используйте контейнер для хранения каждого адреса памяти, назначенного в новом.Удалите его из коллекции, если вызывается delete.В конце вашей программы проверьте, не является ли коллекция пустой.

Подробности можно найти, например, в книге Скотта Мейерса Effective C ++, Item 50.

...