Chr*_*ger 5 .net clr reference
即存储在堆栈上的值类型数据结构的名称是什么,它引用堆上的对象?
即对象引用是System.What(如果有的话)?
我知道这不是指针,不是吗?
我知道它"像"一个指针.
我知道它是"垃圾收集器所有".
我非常相信当你实例化一个对象(即一个引用类型)时,IL会给CLR指令以在内存中分配"堆栈引用/堆值对"(例如
...
.locals init ([0] int32 i1,
[1] object o1,
[2] int64 l1)
IL_0000: nop
IL_0001: ldc.i4.4
IL_0002: stloc.0
IL_0003: newobj instance void [mscorlib]System.Object::.ctor()
IL_0008: stloc.1
IL_0009: ldloc.0
IL_000a: box [mscorlib]System.Int32
...
Run Code Online (Sandbox Code Playgroud)
),并且在语言或IL级别上无法访问实际引用(复制/分配给新引用或操作引用对象除外),并且CLR/CLI和CLR创建和管理对象引用的分配将OBJECTREF DWORD值注入堆栈(或类似).
请让我直截了当,并为所有图书作者和谷歌搜索结束这一点.
谢谢!