首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >引用真的能占用内存吗?

引用真的能占用内存吗?
EN

Stack Overflow用户
提问于 2017-06-27 15:57:03
回答 1查看 142关注 0票数 4

在阅读了这个answer之后,我不太确定引用是否真的占用了内存。我知道当编译器用引用变量替换引用时,它不会占用内存,比如用引用的变量交换引用。

然而,

在一般情况下,编译器通常将引用实现为指针。但是他们通常有更多关于引用指向什么的信息,并将其用于优化。

既然指针占用了内存,那么这个引用会不会导致占用内存,因为编译器把它变成了指针?在编译器选择将引用作为指针而不是仅仅交换它的情况下,如果说引用确实占用内存,但以一种轻微的隐式方式,是否有效呢?

实际上,编译器什么时候选择将引用实现为指针而不是交换,或者这与编译器不同?

EN

回答 1

Stack Overflow用户

发布于 2017-06-27 18:39:57

如果引用是类的成员,它肯定会占用一定的空间。例如:

代码语言:javascript
运行
复制
class A{
public:
  A(int &refval):m_ref(refval){};
private:
  int &m_ref;
}

编译器只会把这个变量当作一个常量指针。

但是,如果将其用作作用域中的临时变量,则没有理由使用内存:

代码语言:javascript
运行
复制
void func(int &a){
  int &a_ref = a;
}

编译器只需用一个实际的变量替换引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44784857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档