Я заметил, что у каждой работающей программы на С есть частное отображение, называемое [стек], которое изначально довольно мало (128 КБ на моей машине), но будет расти для размещения любых автоматических переменных (до предела размера стека). Я предполагаю, что именно здесь находится стек вызовов моей программы.
Однако, похоже, он никогда не уменьшится до своего первоначального размера. Есть ли способ освободить эту память, не прерывая процесс?
Как внутренне реализован стек C; что увеличивает размер отображения [стека] по требованию? Какой-то код, сгенерированный компилятором, библиотека C или операционная система? Где происходит увеличение?
Обновление : я использую Linux 3.0.0, gcc 4.6.1 и glibc6 на x86-64; поскольку это, вероятно, довольно специфично для реализации, любая информация о том, как это работает, будет в порядке.