【问题标题】:Are references stored on the heap or stack?引用是存储在堆上还是栈上?
【发布时间】:2013-03-07 08:01:13
【问题描述】:

不知这段代码中是否引用了c等变量:

int a = 5;
int & c = a;

从堆或栈中分配。 任何人都可以帮忙吗?谢谢

【问题讨论】:

标签: c++ memory-management reference


【解决方案1】:

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

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

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

【讨论】:

  • 所以,你的意思是答案未知?
  • @YasinRazlık:我宁愿说答案是无关紧要的。而且在大多数情况下,我相信根本不会分配存储空间:引用只是一个别名,而不是保存内存地址的变量(如指针)。
  • @YasinRazlık 答案没关系。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    没关系,引用只是一个常量自动取消引用的指针,没有指针运算,也没有空值或不确定值的选项。

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2014-04-01
        • 2019-12-02
        • 2011-02-03
        • 2010-11-06
        • 1970-01-01
        • 2010-10-13
        • 2011-04-08
        • 2021-06-19
        • 2019-09-08
        相关资源
        最近更新 更多