Куча (память): различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
Нет описания правки
 
Строка 5: Строка 5:
== Принцип работы ==
== Принцип работы ==
При запуске [[Процесс (информатика)|процесса]] ОС выделяет [[Оперативная память|память]] для размещения кучи. В дальнейшем память для кучи (под кучу) может выделяться динамически.
При запуске [[Процесс (информатика)|процесса]] ОС выделяет [[Оперативная память|память]] для размещения кучи. В дальнейшем память для кучи (под кучу) может выделяться динамически.
Программа пользователя, используя [[Функция (программирование)|функции]], подобные {{cpp|1=malloc()}}, может получать [[Указатель (тип данных)|указатели]] на области памяти, принадлежащие куче. Программы используют кучу для размещения динамически создаваемых структур данных. Программа может освободить память с помощью функций, подобных {{cpp|1=free()}}.
Память кучи можно разделить на '''занятую''' (выделенную программе с помощью {{cpp|1=malloc()}} или подобных функций) и '''свободную''' (ещё не занятую или уже освобождённую с помощью {{cpp|1=free()}} или подобных функций).


Для хранения данных о том, какая область кучи является занятой, а какая — свободной, обычно используется дополнительная область памяти.
Для хранения данных о том, какая область кучи является занятой, а какая — свободной, обычно используется дополнительная область памяти.

Текущая версия от 12:02, 19 октября 2022

Ку́ча — название структуры данных, с помощью которой реализована динамически распределяемая память приложения.

Размер кучи — размер памяти, выделенный операционной системой (ОС) для хранения кучи (под кучу).

Принцип работы

При запуске процесса ОС выделяет память для размещения кучи. В дальнейшем память для кучи (под кучу) может выделяться динамически.

Для хранения данных о том, какая область кучи является занятой, а какая — свободной, обычно используется дополнительная область памяти.

Перед началом работы программы выполняется инициализация кучи, в ходе которой память, выделенная под кучу, отмечается как свободная.

Алгоритмы и производительность

Куча представляет собой непрерывную область памяти, поделённую на занятые и свободные области (блоки) различного размера.

Пример реализации

Создание нескольких списков для хранения информации об областях одинаковых или близких размеров. Выбор списка в зависимости от размера области.