Quantas páginas de memória os compiladores C nos sistemas operacionais de desktop usam para detectar estouros de pilh

Esta questão está relacionada, mas é diferente deestobre matrizes de comprimento variável em C9

As respostas apontam que um perigo ao alocar matrizes de tamanho variável (ou apenas matrizes grandes de tamanho fixo) na pilha é que a alocação pode falhar silenciosamente, em vez de, por exemplo, chamarmalloc, que informa explicitamente ao chamador se a alocação foi bem-sucedid

s plataformas de compilação modernas não incorporadas usam uma zona de memória inválida para detectar alguns estouros de pilha sem nenhum custo adicional (as verificações são apenas as verificações já feitas gratuitamente pela MMU). Isso não protege 100% do problema acima, porque uma matriz local muito grande pode fazer com que o ponteiro da pilha salte sobre a área inválid

Alguém sabe quantas páginas são normalmente alocadas para esta detecção? Eu acho que seria pelo menos 4KiB, mas poderia ser mais. Essa é uma escolha feita pelo compilador ou pelo sistema operacional e, em ambos os casos, existe uma maneira de alterá-lo?

questionAnswers(2)

yourAnswerToTheQuestion