Утечки памяти (memory leaks)

Утечка памяти (memory leak) - процесс неконтролируемого уменьшения объёма свободной оперативной памяти (RAM) компьютера, связанный с ошибками в работающих программах, вовремя не освобождающих ненужные уже участки памяти, или с ошибками системных служб контроля памяти.

/*1*/ char *pointer = NULL;
/*2*/ for( int i = 0; i < 10; i++ ) {
/*3*/   pointer = new char[100];
/*4*/ }
/*5*/ delete [] pointer;

Утечки памяти приводят к тому, что потребление памяти программой неконтролируемо возрастает, в результате рано или поздно вступают в действие архитектурные ограничения среды исполнения, и тогда новое выделение памяти становится невозможным. В этой ситуации в программе, которая запрашивает память, обычно происходит аварийная остановка. Это может по стечению обстоятельств произойти и совсем с другой программой после того, как программа, подверженная утечкам, потребит всю память ЭВМ.

Способы предотвращения:

  1. Отказ от использования динамической памяти (использовать статическое выделение памяти или стек).
  2. Использовать "умные" указатели.
  3. Использовать "Сборщик мусора"

Ссылки

  1. Dr. Memory - Memory Debugger for Windows and Linux