跳到內容

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

即使該實例有兩個 Int32 欄位,編譯器總是會為物件的型別 ID 包含一個額外的 Int32 欄位。這就是為什麼實例大小最終為 12 而不是 8 的原因。