Вызов brk() и sbrk() изменяет расположение маркера окончания программы (program break), который определяет конец сегмента данных процесса (т.е., маркер окончания — это первая точка
после конца сегмента неинициализированных данных). Увеличение маркера окончания программы позволяет процессу выделить память; уменьшение маркера приводит к освобождению памяти.
brk() устанавливает конец сегмента данных в значение, указанное в аргументе addr, если это значение является приемлемым, система имеет достаточно памяти и процесс не достиг максимально
возможного размера своего сегмента данных (см. setrlimit(2)).
sbrk() увеличивает пространство данных программы на increment байт. Вызов sbrk() с increment равным 0 может быть использован для нахождения текущего местоположения маркера окончания
программы.