代码之家  ›  专栏  ›  技术社区  ›  corymathews

所需内存和数据结构布局

  •  1
  • corymathews  · 技术社区  · 14 年前

    当用c语言编译一个类时,函数是否与它一起存储,从而增加了所需的内存?

    换言之,是否值得创建两个类1来存储数据,一个用于存储带有数据类实例的所有函数?

    所以,如果我有200个data only类的实例,它会与data+function类的200个实例不同吗(需要内存)?

    2 回复  |  直到 14 年前
        1
  •  5
  •   Chris Taylor    14 年前

    函数不与类的实例一起存储。函数的开销与类型相关,而不是与单个实例相关。因此实例占用空间不受函数数量的影响。

    http://www.codeproject.com/KB/cs/net_type_internals.aspx

        2
  •  2
  •   jameschinnock    14 年前

    实例化引用类型时,CLR将在堆上创建一个类型对象—堆中的所有对象都包含2个开销成员,即类型对象指针和同步块索引。任何方法都被输入到类型的方法表中,每个方法在类型中定义一个enty。

    第一次调用一个方法时,CLR跟随类型对象指针指向实际类型,并且该方法是JIT的,然后CLR调用此代码,对于后续的方法调用,CLR将调用与该类型关联的已经JIT的代码,而不是对象本身。

    如果有人有任何意见的话,我很乐意纠正这一点。。。。