簡體   English   中英

在C中訪問靈活數組成員

[英]Accessing a Flexible array Member in C

我有一個看起來像這樣的結構:

typedef struct TestCase TestCase;
typedef struct TestCase {   
    char * userName;
    TestCase *c[];    // flexible array member
} TestCase;

在另一個文件中,我試圖將靈活數組成員設置為NULL,但這似乎不起作用(不允許更改其定義方式)

void readIn(FILE * file, TestCase ** t) {
    *t = malloc(sizeof(TestCase));

    (*t)->c = NULL; //gives the error

}

我正在使用雙指針,因為這是為我指定的(這不是完整的代碼,而只是一個snipit)。 (因為稍后還有代碼可以釋放分配的變量)。

任何幫助將不勝感激。

看一下這一行:

 (*t)->c = NULL;

這會嘗試將NULL分配給數組,這是不允許的。 就像寫這樣的東西:

int array[137];
array = NULL; // Not allowed

當你有一個靈活的陣列成員,其目的是,當你malloc內存為對象,你overallocate內存,你需要騰出空間給數組元素。 例如,此代碼

*t = malloc(sizeof(TestCase) + numArrayElems * sizeof(TestCase*));

將分配一個新的TestCase ,它具有一個numArrayElems指針數組。

如果您事先不知道需要多少個指針,那么您可能應該放棄使用靈活的數組成員,而只使用普通的指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM