Полагаю, вы ищете:
способ управления распределением памяти в стеке, по крайней мере, в контексте не перезаписи уже использованной памяти
Конечно, об этом позаботится ОС!Системные вызовы низкого уровня гарантируют, что вновь созданная автоматическая переменная не будет записана в уже используемый блок памяти.
В вашем примере:
for (int i = 0; i < 5; i++) {
int nums[5];
...
}
это не случай, поскольку nums
выйдет из области действия , когда i-я итерация цикла for завершится.
В результате блок памяти nums
был сохранен во время первой итерации, будет помечен как свободный, когда начнется вторая итерация, что означает, что когда nums
первой итерации будет выделено в стеке, он не будет знать о существовании nums
первой итерации, поскольку она уже вышла из области видимости - она не существует!