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