一个引用占用多少空间

本文关键字:多少 空间 引用 一个 | 更新日期: 2023-09-27 17:50:46

我甚至不确定我在这里是否使用了正确的术语,但是如果我有这样的代码:(在c#中)

Object object1;
Object object2;
object1 = new Object();
object2 = object1;

object2会占用和object1一样多的空间吗?还是只指向在object1上创建的实例?

如果我没有使用正确的术语来恰当地表达自己,请务必告诉我。

一个引用占用多少空间

一个引用只占用一个单词的内存。即32位应用程序中的32位,64位应用程序中的64位,等等。

两个变量都占用一个字的内存,因为它们是引用类型。在某个地方还有一定数量的内存,可以容纳一个实际对象实例所需的内存。程序中的这两个变量碰巧都包含对该对象的引用,但是即使它们不包含引用,它们也会占用相同的空间。(毕竟,空引用与有效引用占用相同的空间。)

您可以通过在代码IntPtr.Size中查询得到大小,根据您正在运行的32位或64位进程返回正确的大小。因此每个引用将占用IntPtr.Size字节

http://msdn.microsoft.com/en-us/library/system.intptr.size (v = vs.110) . aspx

object2object1指向堆上相同的底层对象。现在,如果这是一个值类型并且在方法作用域中,那么它将被添加到堆栈中并占用更多内存。

如果你了解C或c++指针的概念,它们是相关的

它将指向同一个实例,您将有两个变量引用堆上的同一个对象。