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 的原因。