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