В такой системе у вас обычно есть защитное слово или что-то подобное в верхней части кучи, что-то вроде 0xa55a
или 0xdeadbeef
.
Тогда периодически это защитное словопроверил, если он был поврежден.Если что-то перезаписывает память.
Теперь это может не обязательно переполнение стека, это может быть неконтролируемая запись в память.Но в обоих этих случаях что-то серьезно не так, поэтому вы также можете относиться к ним одинаково.
Конечно, более современные операционные системы могут использовать подход аппаратного обеспечения, например, в Intel.чипы.В них вы можете настроить сегмент стека на определенный размер, и, если вы попытаетесь писать вне его (используя селектор стека), вы получите ловушку.
В этом случае в куче будет использоваться другой селектор, чтобы его можно было хранить отдельно.