重複の可能性:
スタックが通常下向きに成長するのはなぜですか?
ほとんどのシステム (Linux、Windows など) では、スタックは上位メモリ アドレスから始まり、下位に成長します。
ただし、ほとんどのバッファーは、下位アドレスから上位アドレスに成長します。これには理由がありますか?
これがバッファオーバーフロー攻撃の根本的な問題だと思うからです。
以前、何らかの理由でシステム設計者がスタックを下向きに成長させたのを見たことがあります...
しかし、今日でも、このアーキテクチャ(スタックとバッファの異なる方向の成長)は変更されていないようです。
バッファオーバーフロー攻撃を保護するために、NX保護、ASLR、スタックガード(カナリア)などがあることを知っています。しかし、バッファとスタックの成長方向を同じにしない理由がわかりません...
私は何かを逃していますか?