В некоторых системах обеспечение любого предсказуемого преимущества после переполнения стека может привести к значительным накладным расходам для каждого вызова функции; Таким образом, стандарт вполне разумно рассматривает переполнение стека как Undefined Behavior. Это вполне уместно, если целью является максимизация эффективности, с которой реализация может запускать законные программы.
Стандарт также не требует, чтобы системы имели достаточный стек для поддержки любой нетривиальной глубины вызовов функций. Учитывая, что некоторые полезные программы (особенно в мире встроенных систем) могут обойтись менее чем с 16 байтами стека и, возможно, не обязательно смогут освободить больше RAM, чем это, требуя, чтобы щедрый стек нарушил философию «don «Не платите за то, что вам не нужно».
К сожалению, тот факт, что программа не может сказать ничего о том, какую глубину она потребует, и не запрашивать, какой тип стека доступен, единственные программы, которые могут быть гарантированы, чтобы не участвовать в неопределенном поведении, - это те, использование стека которых ниже минимальных гарантий; вне мира встроенных систем, что в основном означает, что стандарт не гарантирует ничего о какой-либо программе, которая больше, чем игрушка.