参见英文答案 >
Are references stored on the heap or stack?4个
我知道引用不占用任何内存,它将指向它引用的相同内存位置.
例如
我知道引用不占用任何内存,它将指向它引用的相同内存位置.
例如
int i=10; int &r = a;
假设i指向存储器位置1000,因此在这种情况下,r也将指向存储器位置1000.
但是在C语言中,当我们声明一个变量时,它将在某个位置存储在内存中.
在这种情况下,r指向某个位置,但它应该存储在内存中的某个地方,作为仅在引用上使用const指针的内部表示.
提前致谢.
解决方法
这是未指明的,并且有充分的理由.真正的答案是:它取决于参考.它可以表示为普通指针,或者根本不存在.
void foo() { int x[4] = {0,1,2,3}; int &r = x[1]; // more code }
那么它可能根本不会占用任何空间.编译器只会将r的所有用法视为x [1]的别名,并直接访问该int.请注意,此类别名样式引用也可以来自函数内联.
另一方面,如果引用是“持久的”或对其他转换单元(例如数据成员或全局变量)可见,则它必须占用一些空间并存储在某处.在这种情况下,它很可能被表示为一个指针,使用它的代码将被编译为取消引用该指针.
从理论上讲,其他选项也是可能的(例如查找表),但我不认为这些选项可供任何真实编译器使用.