C liberer pointeur structure

Fermé
jeremie -  
 jeremie -
bonsoir, comment fais ton en C pour liberer un pointeur de structure
free(P_STRUCT);
genere une erreur du debbugeur "failure assertrion failed"
merci de votre aide
jeremie
jerelium@free.fr
A voir également:

5 réponses

pouet
 
bonsoir,

pour etre sur qu on se comprend, je precise qu on ne libere pas le pointeur, mais l espace memoire pointe par celui-ci.
a par ca, c est bien free (P_STRUCT), si
ma_struct *P_STRUCT;
question a deux centimes d euros:
tu as bien "malloque" le pointeur?

--
pouet
0
jeremie
 
bin le code du malloc est tester et il est pas NULL sinon ça arrete le programme
mais assert c pour faire quoi stp?
merci
jeremie
0
pouet
 
guillaume@fallen:~$ man assert
Reformatting assert(3), please wait...
ASSERT(3) Linux Programmer's Manual ASSERT(3)

NAME
assert - abort the program if assertion is false

SYNOPSIS
#include <assert.h>

void assert(int expression);

DESCRIPTION
assert() prints an error message to standard output and terminates the program by calling abort() if expression is false (i.e., compares equal to zero).
This only happens when the macro NDEBUG was undefined when <assert.h> was last included.


tu travailles sans le man? tu fais comment pour survivre? :-O

--
pouet
mauvais OS, changer d OS
0
jeremie
 
etc dans quel .h assert()??
merci
0
jeremie
 
...et le miracle ce fut :)

merci bien Mista Pouet
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeremie
 
oue c'est bien declarer comme ça:
...
ma_structure PTR_S;
PTR_S)(ma_structure*)malloc(sizeof(ma_structure));
...
free(PTR_S);
...
-1
pouet
 
et bien en dessous de
PTR_S)(ma_structure*)malloc(sizeof(ma_structure));
tu fais:
assert(PTR_S);
ensuite ce cast est inutile.
et au dessus
de free(PTR_S);
tu fais:
assert(PTR_S);
il faut toujours tester que le retour d un malloc n est pas NULL.
a part ca le code poste est bon.

--
pouet
0