首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定给引用类型的引用类型

指定给引用类型的引用类型
EN

Stack Overflow用户
提问于 2017-05-01 20:45:19
回答 1查看 60关注 0票数 0

我想问一下这个例子是否正确,所以如果您将引用类型分配给引用类型,如下所示:

代码语言:javascript
复制
ClassName p1 = new ClassName();
ClassName p2 = p1;

因此,如果我谈到第一行,当您创建引用变量(类)时,一次会发生两件事。首先,引用类型(类)对象是在堆上创建的(在内存中的某个地址上);其次,对堆上的这个已创建对象的引用(创建对象的地址)在堆栈上创建,并存储在变量中。

对于第二行,我知道从p1引用将复制到p2,因此p2和p1将有相同的引用指向内存中的同一个对象(堆)。但我真的想知道背后发生了什么。我也知道,存储在引用变量中的引用是在堆栈上分配的。

所以,如果我说,在将引用类型赋值给引用类型之后,实际发生了什么。因为引用(内存中的对象的“地址”)实际上类似于“值类型”(我不是指堆中的对象),所以将引用类型赋值给引用类型,我可以理解为通过值分配引用(地址)?

谢谢你的回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-01 20:53:09

尽管有许多不同之处;引用在概念上与内存地址相似;变量只存储地址,因此将地址分配给另一个变量只允许它访问相同的内存实例。

引用类型内存存储在堆上,而不是堆栈上,但是地址‘指针’(变量)存储在堆栈上。当它们超出所有堆栈作用域和线程存储范围时,堆内存将被释放。

托管内存系统与C中的地址/指针概念之间有许多细微的差别--但在您的问题范围内,您似乎有了正确的理解。

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

https://stackoverflow.com/questions/43726279

复制
相关文章

相似问题

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