.net - CLR 类内存布局

标签 .net clr

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/

相关文章:

c# - 为什么 String 类没有无参数构造函数?

c# - 将结构列表从 C# 转换为 C++

sql-server - SQL 2008 CLR 和 Bing map

SQL CLR 存储过程输出

c# - 将 HTML 代码转换为纯文本

c# - 包含比 StartsWith 快?

c# - 智能 HTML 编码

c# - 从 'System.Int32' 到 'System.Nullable` 1[[System.Int32, mscorlib]] 的转换无效

c# - 如何使用 EventBuilder 创建事件?

c# - 指定从基本形式到继承的属性