/------------\ 内存低地址 | | | ... ... | | | |------------| |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()堆栈帧 | | ------------------ \------------/ 内存高地址