1

我的问题是:变量的名称和数据本身是否都存储在堆栈中?

我想知道变量的名称如何链接到堆栈中的地址内存(数据)以及它的作用。

另外,如何知道变量类型由多少字节组成,以及它如何决定读取堆栈中这些确切的字节数?

存储在堆栈中的所有数据是否占用相同的空间,无论它是什么类型的数据?

堆也有同样的问题?

4

1 回答 1

1

一般来说,我相信以下在大多数实际实现中都是正确的:

不,名称和实际数据并非都存储在堆栈中。

编译器跟踪变量在堆栈上的位置,当编译器完成时,对变量的所有引用(即名称)都已被堆栈指针的适当增加/减少所取代,以寻址其中的内存区域。数据被存储。

不,它们不占用相同的空间。一个 4 字节的 var 占用 4 个字节。一个 1000000 字节的变量占用 1000000 字节(但通常不建议这样做)。

堆有点不同......也许这个页面可以回答你的问题更多: http: //www.learncpp.com/cpp-tutorial/79-the-stack-and-the-heap

于 2012-10-15T10:36:20.607 回答