Fonction free en C
descoff
-
kilian Messages postés 8675 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8675 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'utilise la fonction free() de cette maniére dans mon programme :
int *p;
if(*p=NULL) {
free(p);
p=NULL;
}
et quand je compile, jai ce message d'erreur qui me géne :
attention : déclaration implicite de la fonction « «free» »
Je voudrais savoir pourquoi j'ai ce message !!
Merci d'avance !
Cdt
descoff
j'utilise la fonction free() de cette maniére dans mon programme :
int *p;
if(*p=NULL) {
free(p);
p=NULL;
}
et quand je compile, jai ce message d'erreur qui me géne :
attention : déclaration implicite de la fonction « «free» »
Je voudrais savoir pourquoi j'ai ce message !!
Merci d'avance !
Cdt
descoff
Configuration: Linux Firefox 3.0.3
3 réponses
-
Ok il faut inclure stdlib il me semblait bien que j'oubliais quelque chose merci !! et sinon je voulais mettre
if(*p!=NULL) c'est pour sa désolé jme suis trompé !
cdt-
*p est de type entier.
Car p est un pointeur vers un entier. Si tu fais *p, tu scrutes ce qu'il y a à cette adresse, c'est à dire un entier. Et un entier ne peut pas être égal à NULL. NULL est de type pointeur.
Pour info, NULL pourrait se définir comme ça:#define NULL (void *) 0
NULL s'applique toujours à un pointeur, et non pas ce vers quoi il pointe.
-
-
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/malloc.3.html
tu dois inclure la lib.
#include <stdlib.h>
mais sinon je ne comprend vraiment pas l'utilite de ton code oO. Tu fais une initialisation dans un if ! oO!!! -
Salut,
N'oublie pas d'inclure le header qu'il faut: stdlib.h
Ensuite:if(*p=NULL) {
Là tu es en train de mettre NULL dans *p et de tester si *p est différent de NULL. Enfin bref ça n'a pas de sens.
Il ne faut pas appeller free si tu n'as pas appelé malloc avant (ou calloc/realloc).
En gros:#include <stdlib.h> int main() { int *p; p = (int *)malloc(sizeof(int) * 4); *p = 1; free(p); p=NULL; return 0; }