跳到内容

instance_alignof

instance_alignof 表达式返回一个表示给定类实例对齐的 Int32

alignof 不同,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 的原因。