引用是存储在堆还是堆栈上?

时间:2013-03-18 20:16:14

标签: c++ memory-management reference

我想知道此代码中的引用变量是否为c

int a = 5;
int & c = a;

从堆或堆栈分配。 有人可以帮忙吗?感谢

4 个答案:

答案 0 :(得分:15)

引用只是一个别名,C ++ 11标准未指定它是否需要实际存储。

根据C ++ 11标准的第8.3.2 / 4段:

  

未指明引用是否需要存储(3.7)。

答案 1 :(得分:4)

引用只是别名,不必特别在任何地方分配。该标准没有规定这种细节,甚至根本不要求引用有任何存储。

答案 2 :(得分:2)

无关紧要,引用只是一个不带指针算法的常量自动解引用指针,并且没有null或不确定值的选项。

关于重新提出的问题 - 使用引用的方式意味着它们将主要是堆栈分配。这是在所有非静态场景中,其存储不能被省略。那就是C ++,一种高性能的编程语言,它省略了任何未被使用的东西。

答案 3 :(得分:0)

大多数编译器都将引用视为限制指针。