我已经读过引用变量与原始变量共享相同的内存地址,但也占用了堆栈上的一些空间。 并且由于引用具有与原始变量相同的内存地址,因此它也称为别名。
所以,我的问题是如何为参考变量完成内存分配?
答案 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)
如果传递的变量位于内存中,则对该变量的引用通常是指针,可以保存在寄存器中或存储在内存中。如果由于编译器优化而传递的变量位于寄存器中,则对该变量的引用将使用相同的寄存器。