プログラミング言語 Crystal

Crystal の日本語ドキュメントはしばらく更新されておらず情報が古くなっているため、できるだけ原文の英語ドキュメントで最新の情報を参照ください。

翻訳にご協力いただける方は翻訳プロジェクトの issue や Crystal-JP の Slack からお知らせください。

sizeof

sizeof は与えられた型のバイト数を Int32 で返します。例をあげます。

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

Reference 型である場合は、そのサイズはポインタのサイズと同じになります。

# 64ビット処理系の場合
sizeof(Pointer(Int32)) #=> 8
sizeof(String)         #=> 8

この理由は、Reference のメモリはヒープに割り当てられ、渡されるのはそこを指すポインタになるためです。 実際のクラスのサイズを得るには instance_sizeof を使用してください。

sizeof の引数は type なので、typeof とあわせて使うことが多いでしょう。

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