Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > С/С++: Кроссплатформенное программирование, 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 - пока они все не освободяться, отдавать память системе нельзя. |