当我在这个 page 上读到 Stack 和 Heap 的例子时,
我有一个问题,如果像页面上给出的示例一样,一个函数将其所有局部变量放在堆栈上,堆栈实际上是否访问不同的变量?
因为堆栈通常只能访问顶部,所以它只能访问函数的一个变量。
这是否意味着函数的变量存储在堆栈上的结构中?
最佳答案
堆栈指针,顾名思义,是一个和其他指针一样的指针,它指向普通的标准内存。要访问堆栈的任何区域,您只需向指针添加一个偏移量。
如果你从 C 指针的角度来考虑它,你就有堆栈指针
char *stack_pointer = some_memory;
这个指针然后可以用作普通指针,包括添加偏移量以访问堆栈上的特定位置,例如
*(int *)(stack_pointer + 4) = 5;
我建议您尝试学习汇编代码,然后您可以编写一个非常简单的程序,使用一些局部变量,并将其编译为汇编代码并阅读它以确切了解它是如何工作的。
关于c++ - 堆栈内存如何工作或函数变量如何在堆栈上分配和访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603092/