"Куча", к которой обращается большинство людей, это строка:
080de000-080e3000 rw-p 080de000 00:00 0
т.е. это область памяти, созданная и расширяемая с помощью системного вызова brk
, сразу после сегментов .data
и .bss
основной программы.
Можно также рассмотреть следующее как часть «кучи»:
09ceb000-09d25000 rw-p 09ceb000 00:00 0
Кажется, это анонимное отображение, созданное mmap
для обслуживания большого malloc
запроса. Большинство реализаций malloc
используют mmap
для больших запросов, чтобы они могли munmap
передать его на free
и вернуть весь блок памяти ОС. Это также делает calloc
намного быстрее, так как вы гарантированно получите обнуленные страницы таким образом.