0

メモリ割り当ての問題があるようで、私の構造体に別の構造体の配列へのポインタがあるためだと思います。ただし、この配列を初期化していないため、方法がわかりません。

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;
}

それが理にかなっており、あなたが助けてくれることを願っています!

4

2 に答える 2

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;
}
于 2010-10-25T22:52:50.367 に答える
0
bzero(tmp, sizeof(*tmp));

構造体リストの内容をゼロにするだけです。それがあなたが望むものなら。

于 2010-10-25T22:53:18.340 に答える