CLR 类的内存布局是什么?
来自 C++ 背景,具有虚函数的 C++ 类的内存布局以 v-table 指针开始,然后该类的数据成员在内存中跟随。
具有虚函数的 CLR 类是否具有 v-table 指针?这个指针是类内存布局中的第一个字段吗?除了程序员定义的数据成员之外,CLR 类内存布局中是否还有其他字段?这些额外的字段代表什么?
最佳答案
它是特定于实现的,但是 this article描述了 CLR v2 的 Microsoft .NET 实现中存在的内容。我怀疑 CLR v4 也是一样,但我不能保证。查找名为“ObjectInstance”的部分以了解详细信息 - 但您可能会发现整篇文章很有趣。
根据文章,基本上有两位 header :用于锁定的同步块(synchronized block),以及基本上是指向类型信息(包括vtable)的指针的类型引用。
关于.net - CLR 类内存布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8951828/