6
我已经在其他人的问题上找到了无数次有用的答案,这里是在stackoverflow上,但这是我第一次问自己的问题。结构数组的动态分配
我有一个C函数,它动态地需要为结构数组分配空间,然后用从文件中提取的值填充每个数组元素的结构成员。成员分配在循环的第一遍中工作正常,但在第二遍时出现分段错误。
我已经写了这个快速程序说明我有这个问题的要领:
#include <stdlib.h>
#include <stdio.h>
typedef struct {
int a;
int b;
} myStruct;
void getData(int* count, myStruct** data) {
*count = 5;
*data = malloc(*count * sizeof(myStruct));
int i;
for (i = 0; i < *count; i++) {
data[i]->a = i;
data[i]->b = i * 2;
printf("%d.a: %d\n", i, data[i]->a);
printf("%d.b: %d\n", i, data[i]->b);
}
}
int main() {
int count;
myStruct* data;
getData(&count, &data);
return 0;
}
我从这个得到的输出是:
0.a: 0
0.b: 0
Segmentation fault
我不知道我的问题在哪里。似乎malloc调用只为一个结构分配足够的空间,当它应该为五个空间分配空间时。
任何帮助将是非常赞赏。
您还需要在printfs中取消引用'data' – MahlerFive
是的,您是对的。固定。 – Mysticial
感谢您的快速反应! –