引用变量是否占用内存?

时间:2015-03-28 21:12:53

标签: c++

我已经读过引用变量与原始变量共享相同的内存地址,但也占用了堆栈上的一些空间。 并且由于引用具有与原始变量相同的内存地址,因此它也称为别名。

所以,我的问题是如何为参考变量完成内存分配

2 个答案:

答案 0 :(得分:6)

8.3.2参考文献§4

  

未指明引用是否需要存储

话虽这么说,如果引用需要存储,它通常需要与指针一样多的存储空间:

struct P
{
    int* p;
};

struct R
{
    int& r;
};

static_assert(sizeof(P) == sizeof(R), "sizeof(P) == sizeof(R)");

答案 1 :(得分:1)

如果传递的变量位于内存中,则对该变量的引用通常是指针,可以保存在寄存器中或存储在内存中。如果由于编译器优化而传递的变量位于寄存器中,则对该变量的引用将使用相同的寄存器。