Есть ли способ контролировать использование кучи в C ++ / MacOS? - PullRequest
3 голосов
/ 03 февраля 2009

Я боюсь, что часть моего кода вызывает утечки памяти, и я не уверен, как это проверить. Есть ли инструмент или что-то для MacOS X?

Спасибо

Ответы [ 4 ]

4 голосов
/ 03 февраля 2009

Да - есть приложение под названием MallocDebug , которое установлено как часть пакета Xcode.

Вы можете найти его в папке /Developer/Applications/Performance Tools.

2 голосов
/ 03 февраля 2009

Apple имеет хорошее описание того, как использовать MallocDebug на OS X на своих страницах для разработчиков.

1 голос
/ 04 февраля 2009

Конечно, UNIX предоставляет быстрый и грязный способ обнаружения утечек памяти ... top.

Запустите ваше приложение и просмотрите системную память, выделенную вашему процессу с течением времени. Если он постоянно растет, а не должен, то, вероятно, утечка памяти. В этот момент вы получаете Valgrind или используете MallocDebug и т. Д.

Конечно, если вы используете умные указатели и / или RAII, то в вашем коде не должно быть утечек памяти, верно? ;)))

0 голосов
/ 09 февраля 2011

ЛУЧШИМ ПЕРИОДОМ инструмента для ошибок памяти, утечек и т. Д. Является Valgrind. Начало здесь . Вам не нужно делать ничего особенного в вашем коде, и это сообщит, где была выделена память (с полной трассировкой стека, даже в C). Кроме того, он будет обнаруживать записи в освобожденную память, использование неинициализированной памяти и многое другое.

...