gpt4 book ai didi

c++ - 堆栈内存如何工作或函数变量如何在堆栈上分配和访问

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:17 25 4
gpt4 key购买 nike

当我在这个 page 上读到 Stack 和 Heap 的例子时,
我有一个问题,如果像页面上给出的示例一样,一个函数将其所有局部变量放在堆栈上,堆栈实际上是否访问不同的变量?
因为堆栈通常只能访问顶部,所以它只能访问函数的一个变量。
这是否意味着函数的变量存储在堆栈上的结构中?

最佳答案

堆栈指针,顾名思义,是一个和其他指针一样的指针,它指向普通的标准内存。要访问堆栈的任何区域,您只需向指针添加一个偏移量。

如果你从 C 指针的角度来考虑它,你就有堆栈指针

char *stack_pointer = some_memory;

这个指针然后可以用作普通指针,包括添加偏移量以访问堆栈上的特定位置,例如

*(int *)(stack_pointer + 4) = 5;

我建议您尝试学习汇编代码,然后您可以编写一个非常简单的程序,使用一些局部变量,并将其编译为汇编代码并阅读它以确切了解它是如何工作的。

关于c++ - 堆栈内存如何工作或函数变量如何在堆栈上分配和访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com