在C中访问Flexible array成员

1 c arrays struct

我有一个看起来像这样的结构:

typedef struct TestCase TestCase;
typedef struct TestCase {   
    char * userName;
    TestCase *c[];    // flexible array member
} TestCase;
Run Code Online (Sandbox Code Playgroud)

在另一个文件中我试图将灵活的数组成员设置为NULL,但这似乎不起作用(我不允许更改它的定义方式)

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

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

}
Run Code Online (Sandbox Code Playgroud)

我正在使用双指针,因为这是我指定的(这不是整个代码,只是一个片段).(因为稍后还有代码来释放分配的变量).

任何帮助将不胜感激.

tem*_*def 5

看看这一行:

 (*t)->c = NULL;
Run Code Online (Sandbox Code Playgroud)

这会尝试分配NULL给一个不允许的数组.这就像写这样的东西:

int array[137];
array = NULL; // Not allowed
Run Code Online (Sandbox Code Playgroud)

当你有一个灵活的数组成员时,目的是当你malloc为对象存储时,你需要为数组元素腾出空间.例如,这段代码

*t = malloc(sizeof(TestCase) + numArrayElems * sizeof(TestCase*));
Run Code Online (Sandbox Code Playgroud)

将分配一个TestCase具有numArrayElems指针数组的new .

如果您事先并不知道需要多少指针,那么您可能应该避免使用灵活的数组成员并只使用普通指针.