内存映像

/------------\ 内存低地址 
|            |
| ... ...    |
|            |
|------------|
|buff1[0..15]|
|------------|
|buff2[0..15]|
|------------|
| ptr2       |
|------------|
| ... ...    |
|------------|
| buf1[0..15]|
|------------|
| ... ...    | <- 间距8字节,随不同操作系统实现而不同
|------------|
| buf2[0..15]|
|------------|
| ... ...    |
|            |
|------------| <- esp -----------------
| &buf2      |
|------------|
| &buf1      |
|------------|
| ptr        |
|------------|
| diff2      | 
|------------| 
| diff1      |          function()堆栈帧 
|------------| <- ebp 
| SFP        |
|------------| <- ebp + 4
| RET        |
|------------| 
| $3         |
|------------|
| $2         | 
|------------|
| $1         |    
|------------|        ------------------
| ... ...    |              main()堆栈帧
|            |        ------------------
\------------/ 内存高地址