Базовое управление памятью в C++ - Вопросы по С+

Вопрос Базовое управление памятью в C++

Регистрация
28 Авг 2013
Сообщения
82
Репутация
0
Спасибо
0
Монет
0
Короче есть тестовая такая програмка:

int main()
{

body mex(5);

body* lex = new humanBody(0);
cin.get();
cout << (bodies.size())<<endl;
for(int i=0; i<500000;i++){
lex =new humanBody(234);
bodies.push_back(lex);

delete bodies;
}

cin.get();
bodies.resize(0);

cin.get();

return 0;
}

(cin.get() чисто для того чтобы было время посмотреть на память.)

Кроме этого в программе есть два класса, humanBody наследует body, но это вообще не важно.
Важно то, что до создания поинтеров программа занимает 900 кб оперативной памяти, а после их создания и тут же удаления остаётся 3200 кб.
Можете подсказать где я допустил ошибку? Хотелось бы чтобы память возвращалась к 900 кб.
 
Регистрация
8 Авг 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
В стандарте такой функции нет, это зависит от ОС. По умолчанию ранее выделенная память остается у программы. В *NIX можно вызвать malloc_trim, но это не требуется - неиспользуемая память будет просто помечена как таковая, пока туда что-то не попытаются записать. Никаких затрат система реально не несет, а при необходимости уменьшит "занимаемую" память.
 
Сверху Снизу