2011-05-03 2 views
1

Я ищу хороший ресурс/книгу, чтобы узнать о утечке памяти в C++. Я использую Linux Ubuntu и QtCreator в качестве IDE (есть ли способ увидеть их там?).Хороший ресурс/книга, чтобы узнать о утечке памяти в C++?

+3

Предположительно, вы хотите узнать о * предотвращении утечек памяти? –

+0

Предотвращение будет потрясающим. – Cumatru

+0

Есть ли информация по этой теме, чтобы гарантировать или заполнить книгу? Возможно, глава, но не целая книга. –

ответ

3

Что такое утечка памяти?
Утечка памяти, возникает, когда компьютерная программа потребляет память, но не может отпустить ее обратно в операционную систему. В C/C++ всякий раз, когда программа выделяет динамическую память в куче, она также должна выпускать то же самое или это приводит к утечке памяти.

В динамической памяти C в Heap используется функция malloc, эта же память восстанавливается путем явного вызова функции free.

В динамической памяти C++ выделяется на кучи с помощью оператора new или new[], то же самое будет утилизирован через delete или delete[].

Ресурсы, чтобы узнать больше об утечке памяти?
Вы можете найти много онлайн-руководств и книг, чтобы узнать больше о различных распространенных сценариях, в которых встречаются утечки памяти.
Here - один из таких ценных онлайн-уроков.

Как можно обнаружить утечку памяти?
Различные коммерческие инструменты с открытым исходным кодом доступны для обнаружения утечек памяти и сбоев памяти для различных платформ. Поскольку вы специально запрашиваете платформу Linux. Вы можете использовать Valgrind, который является очень эффективным средством обнаружения утечки памяти в Linux.

1

Используйте ЛЮБЫЕ хорошие книги/ресурсы C++. Узнайте все о динамически распределенной памяти и о различиях в автоматических переменных.

Вы можете избежать утечки памяти с помощью хорошего программного обеспечения.

Когда вы сталкиваетесь с утечками памяти в своем коде, вы должны использовать свои знания о них и инструмент, например Valgrind, чтобы обнаружить и собрать информацию о них.

+0

+1 для упоминания Valgrind. – 0xC0000022L

+0

FYI, ** Valgrind ** недоступен для всех платформ, таких как Windows. –

Смежные вопросы