sizeof

sizeof

sizeof 표현식은 주어진 타입의 바이트 크기를 Int32로 반환해요.

sizeof(Int32) # => 4
sizeof(Int64) # => 8

Reference 타입의 경우 크기는 포인터의 크기와 같아요.

# On a 64-bit machine
sizeof(Pointer(Int32)) # => 8
sizeof(String)         # => 8

이유는 Reference의 메모리가 힙(heap)에 할당되고, 그 포인터가 전달되기 때문이에요. 클래스의 실제 크기를 얻으려면 instance_sizeof를 사용해야 해요.

출처: Crystal 공식 문서

본문

sizeof의 인자로는 타입이 오고, typeof와 함께 쓰는 경우가 많아요.

a = 1
sizeof(typeof(a)) # => 4

sizeof는 매크로 언어에서도 사용할 수 있는데, 크기와 정렬이 안정적인 타입에만 적용할 수 있어요. 자세한 내용은 sizeof의 API 문서를 참고하세요.

더 알아보기

  • instance_sizeof: 클래스의 실제 크기를 얻는 표현식
  • typeof: 표현식의 타입을 얻는 표현식