跳到內容

instance_alignof

instance_alignof 表達式會回傳一個 Int32,其中包含給定類別的實例對齊方式。

alignof 不同,後者會回傳已配置物件的參考(指標)對齊方式,而 instance_alignof 會回傳已配置物件本身的對齊方式。

例如:

class Foo
end

class Bar
  def initialize(@x : Int64)
  end
end

instance_alignof(Foo) # => 4
instance_alignof(Bar) # => 8

即使 Foo 沒有實例變數,編譯器總是會包含一個額外的 Int32 欄位,用於物件的型別 ID。這就是為什麼實例對齊方式最終為 4 而不是 1。