Работа функций динамического распределения памяти различается для различных моделей памяти, поддерживаемых системой программирования (смотри первую части книги).
В малых моделях памяти (tiny, small, medium) доступно для использования все пространство между концом сегмента статических данных программы и вершиной программного стека, за исключением 256-байтной буферной зоны непосредственно около вершины стека.
В больших моделях памяти (compact, large, huge) все пространство между стеком программы и верхней границей физической памяти доступно для динамического размещения памяти.
Следующие функции используются для динамического распределения памяти:
| Функция | Краткое описание |
| calloc | выделить память для массива |
| free | освободить блок, полученный посредством функции calloc, malloc или realloc |
| malloc | выделить блок памяти |
| realloc | переразместить ранее выделенный блок памяти, изменив его размер |
| sbrk | переустановить адрес первого байта оперативной памяти, недоступного программе (начала области памяти вне досягаемости программы) |
Система программирования MSC предоставляет дополнительно функции:
| Функция | Краткое описание |
| alloca | выделение блока памяти из программного стека |
| _expand | изменение размера блока памяти, не меняя местоположения блока |
| _ffree | освобождение блока, выделенного посредством функции fmalloc |
| _fmalloc | выделение блока памяти вне данного сегмента |
| _freect | определить примерное число областей заданного размера, которые можно выделить |
| _fmsize | возвращает размер блока памяти, на который указывает дальний (far) указатель |
| halloc | выделить память для большого массива (объемом более 64 Кбайтов) |
| hfree | освободить блок памяти, выделенный посредством функции halloc |
| _memavl | определить примерный размер в байтах памяти, доступной для выделения |
| _msize | определить размер блока, выделенного посредством функций calloc, malloc, realloc |
| _nfree | освобождает блок, выделенный посредством _nmalloc |
| _nmalloc | выделить блок памяти в заданном сегменте |
| _nmsize | определить размер блока, на которой указывает близкий (near) указатель |
| stackavail | определить объем памяти, доступной для выделения посредством функции alloca |
Система программирования ТС предоставляет дополнительно функции:
| Функция | Краткое описание |
| brk | переустановить адрес первого байта оперативной памяти, недоступного программе (начала области памяти вне досягаемости программы) |
| allocmem | низкоуровневая функция выделения памяти |
| freemem | низкоуровневая функция возврата памяти операционной системе |
| coreleft | узнать, сколько осталось памяти для выделения в данном сегменте |
| farcalloc | выделить блок памяти вне данного сегмента |
| farcoreleft | определить, сколько памяти для размещения осталось вне данного сегмента |
| farmalloc | выделить блок памяти вне данного сегмента |
| farrealloc | изменить размер блока, ранее выделенного функцией farmalloc или farcalloc |
| farfree | освободить блок, ранее выделенный функцией farmalloc или farcalloc |
Прототипы функций содержатся в файле malloc.h для системы программирования MSC и в файле alloc.h для системы программирования ТС.