2016-01-27 2 views
1

Как удалить утечку памяти из std::list?Утечка памяти при использовании std :: list

Это просто пример кода:

#define _CRTDBG_MAP_ALLOC 
#include <stdlib.h> 
#include <crtdbg.h> 

#include <iostream> 
#include <list> 
using namespace std; 

void main() 
{ 
    list<int> a; 
    a.clear(); 
    _CrtDumpMemoryLeaks(); 
} 

Когда я пытаюсь запустить его, он показывает некоторую утечку памяти.

Итак, как его удалить?

+1

Я бы пересчитал, просто выполнив '_CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);' в начале вашей программы, чтобы отчет об утечке памяти генерировался автоматически после запуска вашей программы. – PeterT

ответ

7

Вероятно, утечки памяти не происходит. В отчете говорится, что память еще не освобождена, что верно. Он будет освобожден в конце текущего объема - после запуска _CrtDumpMemoryLeaks().

Изменить код следующим образом; он предоставит вам более точный ответ:

void main() 
{ 
    { 
     list<int> a; 
     a.clear(); 
    } 
    _CrtDumpMemoryLeaks(); 
} 

Обратите внимание на движение a контейнера в его собственной области.

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

  • Нет связанных вопросов^_^