我的问题是:变量的名称和数据本身是否都存储在堆栈中?
我想知道变量的名称是如何链接到堆栈中的地址内存(数据)以及它是什么。
此外,如何知道变量类型的字节数以及它如何决定读取堆栈中这些确切的字节数?
存储在堆栈中的所有数据是否占用相同的空间,无论数据类型是什么?。
与堆相同的问题?
答案 0 :(得分:1)
一般来说,我认为在大多数实际实施中都有以下几点:
不,名称和实际数据都不会存储在堆栈中。
编译器跟踪变量在堆栈中的位置,并且当编译器完成时,对变量的所有引用(即名称)已被堆栈指针的适当增量/减少替换以寻址内存存储数据的区域。
不,他们没有占据相同的空间。 4字节var占用4个字节。 1000000字节变量占用1000000字节(但通常不建议这样做。)
堆有点不同......也许这个页面可以更多地回答你的问题:http://www.learncpp.com/cpp-tutorial/79-the-stack-and-the-heap