Форум: Форум C++Разное
Новые темы: 00
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Больше чем одна куча, что имеется в виду?
 
 автор: asker++   (04.02.2012 в 16:59)   письмо автору
 
 

В одной утилите заметил счетчик куч и для каждого процесса их чуть не по 10-20 штук... всегда казалось, что куча одна или здесь считают что-то другое?

  Ответить  
 
 автор: cheops   (04.02.2012 в 18:01)   письмо автору
 
   для: asker++   (04.02.2012 в 16:59)
 

Тут нужно вернуться к тому, что есть куча процесса... не секрет, что выделяя память при помощи malloc() или new, а потом удаляя её при помощи free и delete вы тратите ресурсы. В хорошо организованных программах вы сразу выделяете много памяти, а потом отщипываете от уже выделенной памяти по кусочку, не тратя ресурсы на эту работу. По мере надобности можно увеличивать количество памяти большими кусками. Кроме того, если вы забыли вернуть память - ничего страшного, когда придет время, вы освободите весь кусок разом и в систему вернется вся память. Вот этот большой кусок памяти, зарезервированный с самого начала и увеличивающийся по мере надобности и называется кучей. В Windows куча реализована на уровне ядра и каждому процессу назначается по умолчанию одна куча - именно из неё выделяется память, когда вы пользуетесь malloc() или new. Как бы ужасно процесс не грохнулся, каких бы ошибок с памятью вы не начудили, после окончания работы программы куча освобождается и вся память возвращается системе.

По умолчанию куча одна и все хранится в вперемешку, однако, вы имеете возможность создать свою собственную независимую кучу, например, чтобы все данные для расчетов хранились поближе, более того, программа может подключать динамически библиотеки со своими кучами... и вы сами можете по системные нужды иметь стандартную кучу, под вычисления завести вторую кучу, а под графический интерфейс - третью... поэтому 10-20 куч памяти - это вполне реальное число.

  Ответить  
 
 автор: asker++   (04.02.2012 в 19:18)   письмо автору
 
   для: cheops   (04.02.2012 в 18:01)
 

Век живи, век учись :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования