可能重复:
为什么堆栈通常会向下增长?
在大多数系统(linux、windows 等)中,堆栈从高内存地址开始并逐渐变低。
但是,大多数缓冲区从低地址增长到高地址。是否有一个原因?
因为我认为这是缓冲区溢出攻击的根本问题。
我看到在早些时候,由于某种原因,系统设计人员让堆栈向下增长......
但即使在今天,我也看到这种架构(堆栈和缓冲区的不同增长方向)似乎没有改变。
我知道有 NX 保护、ASLR、堆栈保护(金丝雀)等东西来保护缓冲区溢出攻击。但我不明白为什么他们不使缓冲区和堆栈的增长方向相同......
我错过了什么吗?