跳至内容

instance_sizeof

instance_sizeof 表达式返回一个 Int32,表示给定类的实例大小。

sizeof 不同,sizeof 返回分配对象的引用(指针)的大小,而 instance_sizeof 返回分配对象本身的大小。

例如

class Point
  def initialize(@x, @y)
  end
end

Point.new 1, 2

# 2 x Int32 = 2 x 4 = 8
instance_sizeof(Point) # => 12

即使实例有两个 Int32 字段,编译器也会始终为对象类型 ID 包含一个额外的 Int32 字段。这就是为什么实例大小最终为 12 而不是 8。