Здравствуйте, Krovosos, Вы писали:
K>>>Я могу понять, что STL внутри себя выделяет память. Я не могу понять — почему эта память обратно не вернулась??
Z>>уважаемый дон когданить слышал про аллокаторы в stl?
Z>>я выкинул из примера все что связано с виндюками и прогнал под valgrind'ом, который в конце концов выдал мне следующее:
K>[...]
Z>>==3963== All heap blocks were freed -- no leaks are possible.
K>То бишь утечек не было...
Z>>дык вот возвращаясь к аллокаторам... рекомендую заглянуть в свою реализацию stl и посмотреть как работает дефолтный аллокатор... -- уверен откроете для себя много нового
K>Ну я примерно представляю как он работает — он берет по мере надобности большие куски памяти у ОС и устраивает на них хипы. Разве нет?
K>И после выделения и удаления большого числа объектов память не возвращается системе потому что:
K>a) она сильно дефрагментирована;
K>b) никто и не собирался возвращать системе выделенные по хипы блоки памяти.
K>PS В windows есть вызов _heapmin(), который должен вернуть память хипа системе — не помог.
Гриша, выньдовс реально память освобожденную память не покажет, пока не было попыток ей воспользоваться. Страницы маркируются как свободные, но относящиеся к процессу. Запусти рядом процесс жадный до памяти и ты увидишь, как освободится память.