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
感謝您的快速反應! –