Если создать объект list<int> и записать в него много элеметнов — программа занимает заметно больше ОЗУ. Но если объект удалить — память как будто не освобождается. Как так?
Программа:
#include <stdio.h>
#include <list>
using namespace std;
int main(void) {
printf("Старт. Пока ничего не сделано. Нажмите ввод...\n");
getchar();
list<int> * pl = new list<int>;
printf("Заполнение списка...\n");
for(int i=1; i<=2000000; i++) {
(*pl).push_back(i);
}
printf("Список заполнен. Нажмите ввод...\n");
getchar();
delete pl;
printf("Список удалён. Нажмите ввод...\n");
getchar();
return 0;
} // end func main;
Запуск:
g++ ./mem.cpp && a.out
Память смотрю программой htop. До заполнения списка:
VIRT RES SHR
2672 660 572
С заполненным списком:
VIRT RES SHR
33956 31976 628
После удаления списка:
VIRT RES SHR
33956 31976 628