はじめまして、ぶんたと言います。
sizeof関数について質問させてください。
sizeofを使用すると、その変数などのバイト数を返してくれますよね。
構造体でも使用できるはずなのに、帰ってくる値が違うのです。
たとえば、2つのint型、1つのshort intの構造体、
struct data {
int a;
int b;
short int c;
};
実際にsizeof使用すると、「12」が帰ってきます。
このdata構造体の記憶容量のバイト数は「10」ではないのですか?
宜しくお願いします。
#pragma ディレクティブの packを調べて見てください
#pragma pack(2)
>struct data {
> int a;
> int b;
> short int c;
>};
#pragma pack()
にすると10バイトが返ってくるかな・・
dummy領域に2byte取っているのでしょう。
「メニューバー > 設定 > C/C++ > 構造体メンバのアライメント」の設定はどうなってい
ますか?
「メニューバー > 設定 > C/C++ > カテゴリ:コード生成 > 構造体メンバのアライメン
ト」の間違い。
tibさんへ
見てみたところ、「8バイト*」になっています。
原因が分かりますか?
sizeof は函数ではありませんよ。型だけが実引数に渡せる函数が
あるんでしょうか?
しかもどんな型でもいいなんて函数はどう定義すればいいのでしょう?
sizeof で 12 が返ってきたら 12 です(その時点では)
どんな値が返ってくるかは設定次第なので (VC では) 10 だとか 12
だとか一概に決め付けることは出来ません
#pragma pack や #pragma push 等について調べてみましょう
アラインメントに付いても調べてみましょう
#pragma pack(2)
・
・
・
#pragma pack()
を試してみたら、10が帰ってきました。
sizeofは演算子でしたね。間違えました。
#pragma pack や #pragma push 等について調べてみようと思います。
そのアライメントの値はいくつか選択肢がありますよね。それぞれに設定してビルドし直
してsizeof()がいくつを返してくるか試してみてください。
ありがとうございます。
アライメントの値を変えて、試してみようと思います。
今まで、意識していなかったです。
ありがとうございました。
「解決済み」にするのを忘れていました。