В компьютерной науке, динамическое выделение памяти (также известное как выделение памяти на основе кучи) является распределением памяти для ее использования в компьютерной программе при выполнении этой программы. Это также может рассматриваться как способ распространения собственности на ограниченные ресурсы памяти между многими частями данных и кода.
Динамически выделенная память существует, пока ее явно не освободил программист или сборщик мусора. Это отличается от статического распределения памяти, которая имеет фиксированную продолжительность. Говорят, что объект имеет динамичное время жизни.
Задача выполнения запроса распределения заключается в нахождении блока неиспользованной памяти достаточного размера.
Проблемы при выполнении запроса распределения:
Внутренняя и внешняя фрагментации. Уменьшение фрагментации требует особого внимания, что делает реализацию более сложной. Выделение метаданных может увеличить количество (отдельных) малых выделений; формирование блоков (Chunking) пытается уменьшить этот эффект.
Как правило, память выделяется из большого резерва неиспользуемых областей памяти, называемой кучей. Поскольку точное местоположение выделенных областей не известно заранее, то доступ к памяти является косвенным, как правило, через указатели. Точный алгоритм, используемый для организации с выделением и освобождением областей памяти скрывается за абстрактным интерфейсом и может использоваться любым из методов.