|
主にCとC++において、sizeofは、データ型の大きさを求める単項の演算子である。sizeofは原則としてコンパイル時計算される演算子で、式もしくは括弧でくくった型指定子を与えるとその大きさをバイト単位で返す。これは組込の数値型(整数型や浮動小数点数型)やポインタ型から利用者定義の複合データ型(構造体、共用体、C++のクラス)まで全てのデータ型に対して使用できる。 == 必要性 == 多くのプログラムで、データ型の大きさがわかると便利な状況がある。最もよくある例としては標準Cライブラリのmallocなどによる動的メモリ確保が挙げられる。組込型の大きさは処理系定義となっており、厳密な大きさはsizeof (char)が1であることを除いて標準に定められていない。次の例では10個の要素を持つint型の配列を格納するのに十分なメモリを確保しようとしている。(処理系に依存したコードを書くつもりでなければ)int型の正確な大きさはわからないのでsizeofが必要となる。 int *pointer; / *intへのポインタ型、メモリ確保したデータを参照する */ pointer = malloc(sizeof(int) * 10); このコードで、mallocはメモリへのポインタを返すが、その大きさはちょうどint型10個分になる。 一般的に、CとC++で型の大きさを仮定するのは安全でない。標準規格でもchar以外の型がメモリ上で何バイト占めるかを規定していない。たとえば、16ビットシステムでのint型の大きさは2バイトであるが、大半の32ビットシステムではint型の大きさは4バイトである。また、構造体や共用体では境界調整もあり、ますます正確な大きさを求めるのは困難となる。そのようなこともあり、移植性の高いプログラムを書くには型の大きさを求めるためにsizeofを使用することが推奨されている。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Sizeof」の詳細全文を読む スポンサード リンク
|