内存映像

/------------\ 内存低地址 
|            |
| ... ...    |
|            |
|------------| <- esp -----------------
| buffer[0]  |	
|            |
|            |
| ... ...    |
|            |
|            |
| buffer[255]|          function()堆栈帧 
|------------| <- ebp 
| SFP        |
|------------| <- ebp + 4
| RET        |
|------------|        ------------------
| ... ...    |              main()堆栈帧
|            |        ------------------
\------------/ 内存高地址 

其中,buffer、SFP、RET都被改写成为0x41414141
当function()函数返回时,程序试图读取返回地址的下一个指令,
就从内存地址0x41414141处读取,这个地址已经在进程的地址空间之外了,
因此出现了上述的段错误。