In base al documento delle opzioni di strumentazione gcc , il -fstack-protector protegge solo contro "funzioni che chiamano alloca e funziona con buffer superiori a 8 byte."
Come sono i buffer più grandi di 8 byte diversi da quelli che sono più piccoli di 8 byte? Perché gcc può affermare che i buffer piccoli sono probabilmente più sicuri da ottimizzare?
In un commento nel link , brantgurga afferma che "8 byte è stata trovata per essere la soglia in cui la probabilità di overflow valeva il costo della prestazione della protezione. " Tuttavia, sono confuso sul motivo per cui una dimensione di un buffer ha una relazione con la probabilità di un buffer overflow.