Bonjour tout le monde,
Voilà, je suis en train d'essayer de créer une structure dynamique afin de stocker un tableau de structure, sachant que le nombre d'objet dans ce tableau doit pouvoir varier.
Actuellement je n'en suis qu'à la manipulation des allocations et libérations.
Voici le code :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 /* déclarations dans mon fichier d'en-tête */ typedef struct{ unsigned int id; char *content; } Row; typedef struct{ unsigned int count; Row *rows; } Table; Table *newTable(void); void destroyTable(Table *aTable);
Et ce que j'ai tenté de faire pour l'instant :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 /***************** CREATION ET DESTRUCTION ***************/ Table *newTable(void) { void *tmp = NULL; tmp = malloc(sizeof(Table)); if (tmp != NULL) { Table *newTable = (Table *)tmp; newTable->count = 0; newTable->rows->id = 0; newTable->rows->content = NULL; return newTable; } else { return NULL; } } void destroyTable(Table *aTable) { unsigned int i = 0; unsigned int count = countOfItemInTable(aTable); // déclaré dans le reste du code for(i = 0;i < count;i++) { free(&aTable->rows[i].id); aTable->rows[i].content = NULL; // avant ou apres free() ? free(aTable->rows[i].content); } free(&aTable->count); aTable = NULL; }
Je suis bien conscient de ne pas encore savoir maitriser les allocations et désallocations, c'est bien pour ça que j'aimerais obtenir de l'aide.
Pour cette structure dynamique, je tiens absolument à manipuler manuellement la mémoire de tous les éléments des structures.
Merci et bon développement à tous
P.S.: la question est : qu'est-ce qui ne va pas dans mon code ?
Partager