似乎有内存分配问题,并认为这是因为在我的结构中,有一个指向另一个结构的数组的指针。但是,我没有初始化这个数组,也不确定如何:
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;
}
希望有意义,你可以帮忙!
答案 0 :(得分:3)
您需要再次调用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;
}
答案 1 :(得分:0)
bzero(tmp, sizeof(*tmp));
只是将结构列表的内容归为零。如果这就是你想要的。