Я совсем не знаком с КПП, но вот мое предположение:
Мне кажется, alloca_probe()
. Код, который касается стека шагами страницы, чтобы вызвать исключения PAGE_GUARD
. (прошу прощения за мой x86 язык :))
Используется после выделения большого стека (это также можно сделать с помощью alloca
). В стеке обычно не выделяется вся память, зарезервированная для стека, последняя загруженная страница имеет специальный флаг PAGE_GUARD
, который вызывает аппаратное исключение, которое перехватывается ОС, чтобы он мог фиксировать больше страниц в стеке. , Когда стек используется нормально (с push / pop), эта страница не может быть обойдена. Однако для больших выделений требуется вызов alloca_probe()
, прежде чем можно будет безопасно использовать память.