instance_alignof
The instance_alignof
expression returns an Int32
with the instance alignment of a given class.
Unlike alignof which would return the alignment of the reference (pointer) to the allocated object, instance_alignof
returns the alignment of the allocated object itself.
For example:
class Foo
end
class Bar
def initialize(@x : Int64)
end
end
instance_alignof(Foo) # => 4
instance_alignof(Bar) # => 8
Even though Foo
has no instance variables, the compiler always includes an extra Int32
field for the type id of the object. That’s why the instance alignment ends up being 4 and not 1.