Динамическое размещение массива структур

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

Любая помощь будет очень признательна.

6
задан David Thielke 23 October 2011 в 05:34
поделиться