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