natrafiłem na pewien problem w Debianie, ale sprawdziłem i to samo jest w Ubuntu i Gentoo.Kompilator g++
Oto kod:
Kod: Zaznacz cały
#include <iostream>
#include <set>
#include <cstdio>
using namespace std;
int main()
{
set <int> S;
for(int i=1;i<= 10000000;i++)
{
S.insert(i);
}
for(int i=1;i<= 10000000;i++)
{
S.erase(i);
}
while(1)
{
}
}
taskmgr w Windows pokazuje że program wykorzystuje ok 300 MB, a potem prawie wszystko zwalnia. Kompilowane przez MinGW.
Natomiast na linuxach program również dochodzi do tych 300 MB, ale już nic nie zwalnia.
Czy jest to normalne?
Wydaje mi się, iż to kwestia jakiegoś zarządzania pamięcią typu "lazy" w linuxach, i że pewnie zostanie zwolnione w razie potrzeby, ale wolę zapytać.
Linki do wyjaśnień może gdzieś w dokumentacji mile widziane

Pozdrawiam