コンテンツへスキップ

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はインスタンス変数を持っていませんが、コンパイラは常にオブジェクトの型ID用の追加のInt32フィールドを含めます。そのため、インスタンスのアライメントは1ではなく4になります。