首页 > 其他 > 详细

局部变量与堆栈

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

 

 

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

bubuko.com,布布扣

 

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

bubuko.com,布布扣

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

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

局部变量与堆栈

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!