当前位置:  开发笔记 > 编程语言 > 正文

如何访问堆栈上的变量?

如何解决《如何访问堆栈上的变量?》经验,为你挑选了2个好方法。

假设我们有这些局部变量:

int a = 0;
int b = 1;
int c = 2;
int d = 3;

据我所知,这些将在系统堆栈上分配,如下所示:

|   |
| 3 | d
| 2 | c
| 1 | b
|_0_| a

这是否意味着为了获得a的值,必须首先从堆栈中弹出d,c和b的值?如果是这样,这些值会在哪里出现?这是否意味着访问最近声明的变量会更快?或者我错过了什么(我怀疑是这种情况),整个事情以其他方式起作用?

编辑:谢谢,伙计们!



1> starblue..:

堆栈上的局部变量通常是相对于所谓的帧指针访问的,帧指针指向堆栈帧的开头.也可以相对于堆栈指针执行此操作,但由于这在表达式的评估期间移动,因此更难以跟踪.

实际上,这些变量也可以保存在处理器寄存器中.


访问的,
堆栈帧的开头.也可以相对于堆栈指针执行此操作,但由于这在表达式的评估期间移动,因此更难以跟踪.

2> Christoph..:

或者我错过了什么

您错过了堆栈驻留在常规内存中,这允许随机访问 - 只需向帧指针("本地"堆栈的底部)添加适当的偏移量,并获得指向保存该值的内存单元的指针.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有