码迷,mamicode.com
首页 > 其他好文 > 详细

局部变量与堆栈

时间:2014-08-13 22:00:17      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   strong   数据   2014   

 

 

我们知道函数中的局部变量存储在堆栈之中,如下图所示,当局部变量1、2、3存到堆栈中后,堆栈指针ESP并没有下移,依然指向原来的位置。出现这种情况的原因是:局部变量进入堆栈并不是使用push而是使用mov操作,所以ESP无变化。正是因为这样,如果函数把任何数据压入堆栈,那么局部变量将会被覆盖。

bubuko.com,布布扣

 

为了保护局部变量,解决方法是在函数代码的开始添加一行(针对汇编语言),通过从ESP寄存器减去一个值,为局部变量保留一定数量的堆栈空间。如下图所示:

bubuko.com,布布扣

现在,如果把任何数据压入堆栈,数据会被存放在局部变量下面,这就保护了局部变量。

局部变量与堆栈,布布扣,bubuko.com

局部变量与堆栈

标签:style   blog   http   color   使用   strong   数据   2014   

原文地址:http://www.cnblogs.com/nufangrensheng/p/3910919.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!