Это связано с вопросом «Почему стеки обычно растут вниз?» , но больше с точки зрения безопасности. Я вообще имею в виду x86.
Мне кажется странным, что стек будет расти вниз, когда буферы обычно записываются в память вверх. Например, типичная строка C ++ имеет конец с более высоким адресом памяти, чем начало.
Это означает, что при переполнении буфера вы перезаписываете дальше в стек вызовов, что, как я понимаю, представляет собой угрозу безопасности, поскольку открывает возможность изменения адресов возврата и содержимого локальных переменных.
Если бы стек в памяти увеличивался, разве переполнение буфера не могло бы просто привести к потере памяти? Это улучшит безопасность? Если так, то почему это не было сделано? Как насчет x64, эти стеки растут вверх, а если нет, то почему?