Операционные системы виртуальной памяти (при использовании ЦП с MMU) автоматически увеличивают сегмент данных / стека при необходимости до максимума.В системах POSIX максимумы могут быть настроены с помощью setrlimit (), как сказал W. Craig Trader.POSIX определяет RLIMIT_DATA, RLIMIT_STACK и RLIMIT_AS для ограничений.
malloc () внутренне использует brk () для увеличения / уменьшения сегмента данных или mmap () / munmap () для запроса / освобождения отображений памяти.Стек увеличивается, когда процессор пытается получить доступ к памяти ниже выделенного стека.
В системах без MMU (например, uClinux) формат исполняемого файла обычно имеет поле для размера стека (посмотрите наНапример, формат файла BFLT).