コンテンツへスキップ

instance_sizeof

instance_sizeof式は、指定されたクラスのインスタンスサイズを持つInt32を返します。

割り当てられたオブジェクトへの参照(ポインタ)のサイズを返す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

インスタンスには2つのInt32フィールドがありますが、コンパイラは常にオブジェクトの型ID用の追加のInt32フィールドを含めます。そのため、インスタンスサイズは最終的に8ではなく12になります。