2010-10-25 10 views
0

Semble avoir un problème d'allocation de mémoire et pense que c'est parce que dans ma structure, il y a un pointeur vers un tableau d'une autre structure. Cependant, je ne suis pas ce tableau et l'initialisation ne sais pas comment:Initialisation du tableau dans la structure - 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; 
} 

espoir qui fait sens et vous pourriez aider!

Répondre

3

Vous devrez à nouveau appeler 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; 
} 
+0

Comment pouvez-vous simplement accéder à la table, vous ne définissez pas le pointeur dans la structure? –

+0

@Igor K: Oups, mon erreur. Utilisé pour les fonctions membres appropriées. – Puppy

+0

Merci @DeadMG, essayé ceci mais je reçois toujours la même erreur avec mon programme, bien que ce soit une autre question! –

0
bzero(tmp, sizeof(*tmp)); 

juste remet à zéro le contenu de votre liste de struct. Si c'est ce que tu veux.