首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么syncblk位于-4而不是0?

为什么syncblk位于-4而不是0?
EN

Stack Overflow用户
提问于 2010-10-05 11:45:20
回答 2查看 156关注 0票数 0

因此,如果你想查看对象的同步块,在sos下,你必须查看对象地址之前的-4字节(在32位机器上)。有人知道返回4个字节的智慧是什么吗?我的意思是他们可以有同步块在0,然后输入句柄在+4,然后对象字段在+8。

EN

回答 2

Stack Overflow用户

发布于 2010-10-07 15:18:26

这是一个实现细节,所以我不能给你放置同步块的确切原因。但是,如果您查看共享源代码CLI,您将看到运行时对如何分配和使用对象进行了各种优化,实际上与单个实例关联的数据位于几个不同的位置。例如,同步块只是位于别处的结构的索引值。类似地,MethodTable和EEClass存储在别处。这些都是实现细节。重要的一点是,IMO了解如何挖掘出调试过程中所需的信息。理解为什么实现细节是这样的就不那么重要了。

票数 1
EN

Stack Overflow用户

发布于 2010-10-07 15:36:07

我想说它符合预期,特别是对于已经被explicitly laid out的结构。正如Brian所说,这只是一个实现细节。这类似于有多少malloc实现将分配比请求更多的空间,将分配大小存储在前四个(或八个)字节中,然后返回一个偏移量的指针,以指向超出该值的下一个字节。

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

https://stackoverflow.com/questions/3860705

复制
相关文章

相似问题

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