Re: изучаю STL, вопросы по распределению памяти
От: staseaux  
Дата: 15.02.05 22:19
Оценка:
Здравствуйте, zdx, Вы писали:

zdx>А если сделать vStlStr.clear ();, то в диспетчере видно, что память, занимаемая прогой не освобождается.

zdx>Что делать: — 1) я чего то упустил в данном примере
zdx> 2) начать изучать аллокаторы (хотя я пока смутно представляю, зачем они нужны)
zdx> 3) говорить что кривой диспетчер

zdx>спасибо.


Аллокаторы тут не причем. Просто вектор никогда не сжимается. То есть при изменении размера вектора в меньшую сторону освобожденная память не возвращается вектором аллокатору (который уже может вернуть память системе). Это сделано, чтобы обеспечить высокую производительность.
Впрочем есть трик, который описан, например, у Саттера:

std::vector<char> big_vector(1000000);
std::vector<char>().swap(big_vector);


Вторая строка делает то, что ты хочешь
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.