Инициализация массива внутри структуры - C?
Кажется, есть проблема с выделением памяти, и я думаю, что это потому, что в моей структуре есть указатель на массив другой структуры. Однако я не инициализирую этот массив и не уверен, как:
typedef struct listitem {
struct listitem *next;
Entry *entry;
} ListItem;
typedef struct list {
ListItem *table[100];
} List;
List *initialize(void)
{
List *tmp;
if ((tmp = (List *)malloc(sizeof(List))) == NULL)
return NULL;
return tmp;
}
Надеюсь, что это имеет смысл, и вы могли бы помочь!
2 ответа
Решение
Вам нужно будет снова вызвать malloc.
typedef struct listitem {
struct listitem *next;
Entry *entry;
} ListItem;
typedef struct list {
ListItem *table[100];
} List;
List *initialize(void)
{
List *tmp;
if (!(tmp = (List *)malloc(sizeof(List))))
return NULL;
for(int i = 0; i < 100; i++) {
tmp->table[i] = (ListItem*)malloc(sizeof(ListItem));
}
return tmp;
}
bzero(tmp, sizeof(*tmp));
просто обнуляет содержимое вашего списка структур. Если это то, что вы хотите.