Bonjour,
Je suis sur une fonction de liberation de memoire d'apres une allocation que j'ai faite (allocation dynamique d'une structure).
Voici l'appel à ma fonction:
et voici l'implémentation de ma fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part FOS_Menu_menubar_destroy (&desktop_menubar);
Le problème survient lors de la libération suivante:
Code : 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 void FOS_Menu_menubar_destroy (FOS_Menubar ** p_menubar) { /* ----- Verification de l'argument ----- */ if (!p_menubar) { return; } /* ----- */ /* ----- Suppression de la barre de menu ----- */ free ((*p_menubar)->rect); (*p_menubar)->rect = NULL; if ((*p_menubar)->menu_addr != NULL) { free ((*p_menubar)->menu_addr); } (*p_menubar)->menu_addr = NULL; free (*p_menubar); *p_menubar = NULL; /* ----- */ }
et voici le message d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 free (*p_menubar); *p_menubar = NULL;
Voici a tout hazard la partie de l'allocation de la structure:*** glibc detected *** free(): invalid pointer: 0xbfe8e8a0 ***
ici aussi je passe l'adresse du pointeur dans l'appel à ma fonction tout comme pour la précédente.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ... *p_menubar = malloc (sizeof (*p_menubar)); ...
Merci d'avance pour votre aide![]()
Partager