参数、返回地址、局部变量和ebp的关系
Debug版本
| 地址 | 内容 | 寄存器 | 说明 |
|---|---|---|---|
| 0x004000D0 | Local_3 | ebp-20 | 局部变量3 |
| 0x004000D4 | 0xCCCCCCCC | ||
| 0x004000D8 | 0xCCCCCCCC | ||
| 0x004000DC | Local_2 | ebp-14 | 局部变量2 |
| 0x004000E0 | 0xCCCCCCCC | ||
| 0x004000E4 | 0xCCCCCCCC | ||
| 0x004000E8 | Local_1 | ebp-8 | 局部变量1 |
| 0x004000EC | 0xCCCCCCCC | ||
| 0x004000F0 | EBP_Old | ebp | 旧ebp值 |
| 0x004000F4 | Retn_Addr | ebp+4 | 返回地址 |
| 0x004000F8 | Parem_1 | ebp+8 | 参数1 |
| 0x004000FC | Param_2 | ebp+C | 参数2 |
| 0x00400100 | Param_3 | ebp+10 | 参数3 |
Release版本
| 地址 | 内容 | 寄存器 | 说明 |
|---|---|---|---|
| 0x004000E4 | Local_3 | ebp-c | 局部变量3 |
| 0x004000E8 | Local_2 | ebp-8 | 局部变量2 |
| 0x004000EC | Local_1 | ebp-4 | 局部变量1 |
| 0x004000F0 | EBP_Old | ebp | 旧ebp值 |
| 0x004000F4 | Retn_Addr | ebp+4 | 返回地址 |
| 0x004000F8 | Parem_1 | ebp+8 | 参数1 |
| 0x004000FC | Param_2 | ebp+C | 参数2 |
| 0x00400100 | Param_3 | ebp+10 | 参数3 |
堆栈由高地址到低地址增长
本文详细解析了Debug与Release版本下,栈内存中参数、返回地址、局部变量及ebp寄存器之间的关系。通过具体地址与内容展示,帮助读者理解不同编译模式下栈内存的布局差异。
1万+

被折叠的 条评论
为什么被折叠?



