参考类型分配给参考类型



我想询问我是否正确获取此示例,因此,如果将参考类型分配给参考类型,例如:

ClassName p1 = new ClassName();
ClassName p2 = p1;

因此,如果我要谈论第一行,当您创建参考变量(类(时,一次发生了两件事。首先,在堆上创建了参考类型(类(的对象(在内存中的某些地址(,其次,在堆上创建了此创建对象的引用(创建对象的地址(是在堆栈上创建的,并存储在变量。

对于第二行,我知道,从P1参考将复制到P2,因此P2和P1将在内存中具有相同的引用指向相同的对象(HEAP(。但是我真的想知道它背后发生了什么。我也知道,将存储在参考变量中的参考分配在堆栈中。

因此,如果我说将参考类型分配给参考类型背后发生了什么。是否是:因为引用(内存中对象的"地址"(实际上是"值类型"(我不是在堆上(,因此将参考类型分配给参考类型,我可以理解,就像分配参考(地址(按值?

谢谢您的回答。

尽管有很多差异;参考在概念上与内存地址相似。该变量仅存储地址,因此将地址分配给另一个变量仅允许其访问相同的内存实例。

参考类型内存存储在堆上,而不是堆栈上,但是地址"指针"(变量(存储在堆栈上。当它们脱离所有堆栈范围和线程存储范围时,释放了堆内存。

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

最新更新