ты узнаешь что стек кончился...
Можно при возврате управления проверять прошлое состояние указателя на фрейм
Можно, но проблема в указателях на объекты внутри стека. Если стек увеличивать через обычный realloc, то гарантий что эти объекты останутся на том же месте нет. Конечно теоретически есть способ оставаться в рамках тех же адресов памяти, путем переназначения мэппингов физических страниц памяти (как это делается в некоторых реализациях malloc), но это вроде не на всех типах ОС доступно, и нет гарантии что эти виртуальные адреса не заберёт ещё что-то, над чем контроля уже не будет (какой-то другой аллокатор). Самый распространенный способ понять что стек кончился, это убрать доступ на чтение у последнего куска памяти стека и ловить системное исключение/сигнал
Обсуждают сегодня