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: 표현식의 타입을 얻는 표현식