/------------\ 内存低地址 | | | ... ... | | | |------------| <- esp ----------------- | buffer[0] | | | | | | ... ... | | | | | | buffer[255]| function()堆栈帧 |------------| <- ebp | SFP | |------------| <- ebp + 4 | RET | |------------| ------------------ | ... ... | main()堆栈帧 | | ------------------ \------------/ 内存高地址 其中,buffer、SFP、RET都被改写成为0x41414141 当function()函数返回时,程序试图读取返回地址的下一个指令, 就从内存地址0x41414141处读取,这个地址已经在进程的地址空间之外了, 因此出现了上述的段错误。