Как наращивание стека работает на Windows и Linux? - PullRequest
2 голосов
/ 21 июля 2011

Я только что прочитал, что программы Windows вызывают _alloca при входе в функцию, чтобы увеличить стек, если им требуется более 4 КБ в стеке. Я полагаю, что каждый раз при попадании на защитную страницу Windows выделяет новую страницу для стека, поэтому _alloca обращается к стеку за 4 тыс. Шагов, чтобы выделить место.

Я также читал, что это относится только к окнам. Как linux (или другие oses) решают эту проблему, если им не нужно _alloca?

1 Ответ

1 голос
/ 21 июля 2011

Linux опирается на сильно оптимизированную обработку ошибок страниц, поэтому происходит следующее: программа просто помещает данные в стек, а обработчик ошибок страниц расширяет стек на лету.

...