因此,如果你想查看对象的同步块,在sos下,你必须查看对象地址之前的-4字节(在32位机器上)。有人知道返回4个字节的智慧是什么吗?我的意思是他们可以有同步块在0,然后输入句柄在+4,然后对象字段在+8。
发布于 2010-10-07 15:18:26
这是一个实现细节,所以我不能给你放置同步块的确切原因。但是,如果您查看共享源代码CLI,您将看到运行时对如何分配和使用对象进行了各种优化,实际上与单个实例关联的数据位于几个不同的位置。例如,同步块只是位于别处的结构的索引值。类似地,MethodTable和EEClass存储在别处。这些都是实现细节。重要的一点是,IMO了解如何挖掘出调试过程中所需的信息。理解为什么实现细节是这样的就不那么重要了。
发布于 2010-10-07 15:36:07
我想说它符合预期,特别是对于已经被explicitly laid out的结构。正如Brian所说,这只是一个实现细节。这类似于有多少malloc实现将分配比请求更多的空间,将分配大小存储在前四个(或八个)字节中,然后返回一个偏移量的指针,以指向超出该值的下一个字节。
https://stackoverflow.com/questions/3860705
复制相似问题