2013-11-01 35 views
1

假設我有以下結構定義-Memory分配: -下一個結構

struct structure 
    { 
    int a; 
    int array[]; 
    }one; 

如何在存儲器分配用於上述結構,當數組大小unsepicified?

回答

3

假設32位int和8位char,sizeof one很可能是4。也就是說,array是一個空的(零長度)數組。通常你會動態地分配的結構具有柔性陣列成員:

struct structure *two = malloc(sizeof *two + 32 * sizeof(int)); 

這使得two一個指向在其array領域struct structure與32個元件。

+0

+1,關於* flexible array *的注意事項*:C99§6.7.2.1-18,「...結構的大小就好像靈活數組成員被省略,除了它可能有更多的尾部填充而不是遺漏意味着。「 – WhozCraig