目次
概要
sizeof
演算子は、型あるいは式がメモリ上で占めるバイト数を取得できる便利な機能です。実行環境によってサイズが異なる場合があるため、プログラム内で動的に確認しておくと移植性の向上につながります。本稿では各種組込み型と変数、さらに式に対して sizeof
を適用し、標準出力へ結果を表示するサンプルコードを提示いたします。
サンプルコード
// sizeof 演算子で型と式のサイズを表示するサンプル
#include <iostream>
int main(int /*argc*/, char* /*argv*/[])
{
int value1 = 2;
int value2 = 7;
std::cout << "short int 型のサイズは " << sizeof(short int) << " バイトです。\n";
std::cout << "int 型のサイズは " << sizeof(int) << " バイトです。\n";
std::cout << "long int 型のサイズは " << sizeof(long int) << " バイトです。\n";
std::cout << "float 型のサイズは " << sizeof(float) << " バイトです。\n";
std::cout << "double 型のサイズは " << sizeof(double) << " バイトです。\n";
std::cout << "long double 型のサイズは " << sizeof(long double)<< " バイトです。\n";
std::cout << "変数 value1 のサイズは " << sizeof(value1) << " バイトです。\n";
std::cout << "式 value1 + value2 のサイズは "
<< sizeof(value1 + value2) << " バイトです。\n";
return 0;
}
コード解説
行 | 説明 |
---|---|
2 | #include <iostream> により標準入出力ストリームを使用できます。 |
5 | 整数型変数 value1 と value2 を宣言し初期化します。 |
7 | sizeof(short int) により 16 ビット環境等でのサイズを確認します。 |
8 | sizeof(int) はプラットフォームに応じて 4 または 8 バイトが一般的です。 |
9 | sizeof(long int) は 32 ビットと 64 ビット環境で差異が生じやすい箇所です。 |
10 | 浮動小数点型 float のサイズを取得します。 |
11 | 倍精度浮動小数点型 double のサイズを取得します。 |
12 | 拡張倍精度 long double のサイズを取得します。 |
13 | 変数そのものに sizeof を適用した場合、宣言型に基づくサイズが返されます。 |
14 | 式 value1 + value2 の評価結果は int となるため、そのサイズが取得されます。 |
応用
構造体やクラスに対して sizeof
を用いると、メンバ配置やパディングによる全体サイズを確認できます。テンプレートメタプログラミングと組み合わせれば、コンパイル時にサイズを検証し型制約を設けることも可能です。また、可変長配列を扱う際には動的確保前に sizeof
で要素サイズを把握し、バッファ不足を防止できます。
まとめ
sizeof
演算子は、実行環境依存のメモリサイズをプログラム中で取得できるため、移植性確保やデバッグにおいて重要な役割を果たします。本記事では組込み型・変数・式に適用する例を示し、各結果の意味を整理いたしました。開発初期にサイズを確認しておくことで、データ構造設計やメモリ計算の精度を高められます。