instance_sizeof

instance_sizeof

instance_sizeof 표현식은 주어진 클래스의 인스턴스 크기를 담은 Int32를 반환합니다.

객체의 참조(포인터) 크기를 반환하는 sizeof와 달리, instance_sizeof는 할당된 객체 자체의 크기를 반환해요.

예시로 볼게요:

class Point
  def initialize(@x : Int32, @y : Int32)
  end
end

Point.new 1, 2

# 2 x Int32 = 2 x 4 = 8
instance_sizeof(Point) # => 12

인스턴스에 Int32 필드가 두 개뿐인데도, 컴파일러는 객체의 타입 id를 위해 Int32 필드를 항상 하나 더 넣습니다. 그래서 인스턴스 크기가 8이 아니라 12가 되는 거예요.

출처: Crystal 공식 문서

더 알아보기 (Learn more)