struct Hoge { char c; int i; };
上記の構造体サイズは理屈上は5バイトであるが、パディングされてるので実際には8バイトになっている。こいつを確実に5バイトにしたいときは#pragma pack命令を使う。
#pragma pack(push, 1) struct Hoge { char c; int i; }; #pragma pack(pop)1バイト単位でアラインメントを調整するので、結果としてパディングされないということになる。
サンプルコード
#include <stdio.h> struct A { char c; int i; }; #pragma pack(push,1) struct B { char c; int i; }; #pragma pack(pop) int main() { printf("sizeof A: %d\n", sizeof(A));// >> sizeof A: 8 printf("sizeof B: %d\n", sizeof(B));// >> sizeof B: 5 return 0; }バイナリでファイルを読み込むときに、使えそうなテクだ。
参考サイト
0 件のコメント:
コメントを投稿