Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > использование памяти программой


Автор: hexzo 21.10.2011, 15:13
А почему у меня программка сначала дофига потом ещё больше дофига потом ещё меньше памяти занимает, когда постоит, тогда совсем мало, ещё постоит - чуть побольше? Разве в с++ память не сразу должна очищаться? И почему после запуске программа занимает больше места чем в простое?

]12.956 при запуске
15.168 при работе
16.044
16.052
5.728   если долго не трогать
6.004   если ещё дольше не трогать

Автор: RazrFalcon 21.10.2011, 15:38
Какая ОС?
Как определяли занимаем размер ОЗУ?

PS: у меня (linux), тоже через время меньше жрет.

Автор: bsa 22.10.2011, 00:13
Интересно, это по какому параметру определяется? Наверняка не по виртуальной памяти. Может по резидентной? Тогда ничего удивительного - система выгрузила ненужные страницы памяти в своп. А через какое-то время подгрузила понадобившуюся.

Автор: math64 22.10.2011, 08:38
Вызываешь, например int* array = new int[16]; Вместо 64 байт у системы запрашивается больше, например 16K.
При последующих вызовах new память у системы не запрашивается, а выделяется из этого куска. Если этго куска не хватит, у системы запрашивается новый кусок.
Далее, делаешь delete[] array; Но освободившаяся память находиться в куске, в котором выделена память для других new - пока они все не освободяться, отдавать память системе нельзя.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)