Я находил полезные ответы на вопросы других людей здесь, на 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 выделяет достаточно места только для одной структуры, когда он должен выделять пространство для пяти.
Любая помощь будет очень цениться.