- 255 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 13:48:22 ]
- 以下のような二種類の構造体のフィールドなのですが、
どちらがより適切なのでしょうか? struct A { int length; // textの長さ unsigned char text[0]; // 利用者側で好きに領域を確保して先頭を格納。 }; struct B { int length; unsigned char text[1]; }; 違いはtext[1]とtext[0]だけなのですが、 text[1]としてしまうと、 unsigned char text[] = "aiueo"; A* a = (A*)malloc(sizeof(A) + strlen(text)); としたときに(処理系依存ですが) intで4バイト、unsigned charがパディングされて4バイト さらに文字列の長さで5バイト確保されます。 これだとunsigned charがパディングされた4バイトは無駄な領域の気がします。 text[1]とするメリットはあるのでしょうか?
|

|