Как мне перечислить все выделенные объекты (выделенные оператором new) (не только те, которые имеют свои собственные отображения памяти, но и те, которые тоже находятся в куче?) В C ++?
Мне нужно это, чтобы найти утечки памяти.
Платформа: Linux, gcc, i386, AMD_K64 (лучше: независимость от платформы)
Официального пути не может быть, но может быть и обходной путь.
Например, есть ли какая-то внутренняя переменная, к которой вы можете получить доступ? Может быть, указатель на список, используемый для управления кучей?
Вы всегда можете использовать valgrind для проверки утечек памяти. Либо установите его с вашим менеджером пакетов, либо просто скачайте и скомпилируйте из: http://valgrind.org/
Если вы компилируете свое приложение в режиме отладки, оно может точно указать файл / строку, где вы выделили ресурсы, которые не были освобождены / удалены.
Ты можешь использовать Valgrind он делает именно то, что вы хотите (заменяет malloc своей собственной реализацией) и считает выделения / выпуски
Есть потенциально две формы потери памяти
Я уверен, что есть еще инструменты. Это довольно популярно.
В Solaris я бы рекомендовал libumem для отслеживания утечек и анализатор в Sun Studio для профилирования и анализа памяти.