1
假設我有以下結構定義-Memory分配: -下一個結構
struct structure
{
int a;
int array[];
}one;
如何在存儲器分配用於上述結構,當數組大小unsepicified?
假設我有以下結構定義-Memory分配: -下一個結構
struct structure
{
int a;
int array[];
}one;
如何在存儲器分配用於上述結構,當數組大小unsepicified?
假設32位int
和8位char
,sizeof one
很可能是4
。也就是說,array
是一個空的(零長度)數組。通常你會動態地分配的結構具有柔性陣列成員:
struct structure *two = malloc(sizeof *two + 32 * sizeof(int));
這使得two
一個指向在其array
領域struct structure
與32個元件。
+1,關於* flexible array *的注意事項*:C99§6.7.2.1-18,「...結構的大小就好像靈活數組成員被省略,除了它可能有更多的尾部填充而不是遺漏意味着。「 – WhozCraig