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