程序员的自我修养——内存

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qiuyuan_1/article/details/50967889

函数 和 局部变量 都要使用到栈。
在经典的操作系统中,栈总是向下增长的。压栈操作使栈顶的地址减小,弹出的操作使栈顶地址增大。


堆栈帧

保存了一个函数调用所需要的维护信息的栈。也称为活动记录。
一般包含以下方面:
1. 函数返回地址和参数;
2. 临时变量:函数的非静态局部变量、编译器自动产生的其他临时变量。
3. 保存的上下文:函数调用前后需要保持不变的寄存器。


Debug模式在第四步里,将所有分配出来的栈空间的每一个字节都初始化为0xCC。0xCCCC的汉字编码就是“烫”。有时是0xCD。0xCDCD的汉字编码是“屯”。


调用惯例

调用惯例 参数压栈 出栈方 名字修饰
cdecl: 从右至左 函数调用方 下划线+函数名
stdcall:从左至右 函数本身 下划线+函数名+@+参数字节数

如果程序中没有涉及到可变参数,最好用__stdcall。


Windows中 VirtualAlloc()用来向系统申请空间(必须为页的整数倍 )。

展开阅读全文

没有更多推荐了,返回首页