Каков правильный подход для динамического выделения массива структуры и его компонентов в C?Мне удалось сделать что-то, что работает, но я немного скептически отношусь, если это правильно.У меня есть следующий код:
Это мой массив структуры, который мне нужно динамически распределить:
typedef struct
{
char *wrong;
char *right;
}Dictionary;
Это функция, которую я вызываю, когда мне нужно инициализировать мой массив масс:
Dictionary *init_Dictionary(int nr_elem)
{
Dictionary *dict;
dict = malloc(nr_elem*sizeof(Dictionary));
for(int i=0; i<nr_elem; i++)
{
char wrong[101],right[101];
scanf("%s%s",wrong,right);
dict[i].wrong = malloc(strlen(wrong)*sizeof(char));
dict[i].right = malloc(strlen(right)*sizeof(char));
strcpy(dict[i].wrong,wrong);
strcpy(dict[i].right,right);
}
return dict;
}
Тогда в моей основной функции у меня есть это:
int nr_elem;
scanf("%d",&nr_elem);
Dictionary *dict;
dict = init_Dictionary(nr_elem);
Кроме того, когда я закончу работу со структурой, как мне освободить использованную память?
РЕДАКТИРОВАТЬ Спасибо всем за быстрые и глубокие ответы!