栈考点
来源:互联网 发布:串口检测软件 编辑:程序博客网 时间:2024/05/11 23:38
1.函数调用时的参数传递和栈帧结构
调用函数时首先进行参数入栈,一般情况下压栈顺序为从右到左,例如:
int i = 0x22222222;
char szTest[] = “aaaa”;//a的ASCII码为0x61
func(i , szTest);
调用上面函数时,先压szTest,再压i,最后压函数地址,但是压szTest的时候不是直接压0x61616161,而压的是szTest的地址。除了要考虑压栈顺序,还要考虑栈的生长方向。在Windows平台上,栈的顺序是从上往下生长的。栈的生长方向的关键就是栈的定义,定义一个栈底–这是高地址,每次压一个数据入栈,栈指针esp减去4(32位系统下),所以栈顶是向着内存低地址方向生长的,所以栈顶地址总是小于等于栈的基地址。
所以上面的例子压栈顺序为(左边为地址,右边为数据):
0x0013FCF0 0x0013FCF8
0x0013FCF4 0x22222222
0x0013FCF8 0x61616161
0 0
- 栈考点
- 栈和队列考点
- 考点
- 核心考点
- 数据库 考点
- 面试考点
- 内存考点
- 高中英语考点
- 笔试考点
- 软件工程考点
- 牛客网 - 剑指Offer - 考点:栈和队列 题目:用两个栈实现队列
- 博英考点
- Java主要考点
- DirectX考点归纳
- JSP考点总结
- 计算机组成原理---考点
- RHCE考点归纳
- C++面试常考点
- Android, 启动活动的最佳写法
- UIView
- 数据结构 线性结构中的数组
- hdu1007 分治
- 机器人书单与学习资源——控制篇
- 栈考点
- This function or variable may be unsafe
- Docker Runs on Windows Server 2016
- android 分辨率自适应
- uva 11383 Golden Tiger Claw 二分图完美匹配
- 欢迎使用CSDN-markdown编辑器
- Halcon学习之仿射变换3
- Java web访问MySql数据库分页查询
- 网络连接之——xUtils 介绍(三)