2014-08-31 3 views
2

Я написал следующий код, чтобы преднамеренно создать утечку памяти.Почему в памяти протекают только три адреса памяти?

#include <windows.h> 

int main(int argc, char* argv[]) 
{ 
    while(1) 
    { 
     char *ch1 = new char[10]; 
     char *ch2 = new char[5]; 
     char *ch3 = new char[2]; 
     Sleep(5); 
    } 
    return 0; 
} 

Я взял журналы с помощью LeakDiag и сделать следующий граф с помощью LDGrapher.

Теперь, мой вопрос, почему только три адреса показаны в графе утечек? Я продолжаю создавать новые указатели в while(1), так что я теряю память на множестве адресов?

enter image description here

+0

Предположительно утечка агрегируются сайта вызова? –

+0

@KerrekSB Извините, я не понял этого. –

+4

В вашем коде есть 3 места, где вы просачиваете память. Вы видите эти 3 места. Это * коды * адреса, а не адреса данных. Они сильно различаются из-за опции компиляции/ZI. –

ответ

0

Включение windows.h «Я полагаю, у ¨R работает это на окна поле» * MANAGAMENT памяти в окнах много умных по сравнению с Linux.

Попробуйте запустить ту же программу в Linux и перерисовывать график, чтобы увидеть differece