[英]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.