Posez votre question Signaler

Fonction free en C

descoff - Dernière réponse le 27 oct. 2008 à 14:31
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
Lire la suite 

Fonction free en C »

7 réponses
Réponse
+1
moins plus
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
Fricky42 - 27 oct. 2008 à 14:16
oO?

int a;
a = NULL;

est tout a fait recevable. NULL a pour valeur binaire 0. stout...
Ce n'est pas du tout un 'type pointeur'...
kilian - 27 oct. 2008 à 14:18
Si, essaie de compiler avec l'option -Wall et -W de gcc, ou mieuyx, essaie avec -pedantic.
Essaie aussi de faire ça:
int *a = 0;
kilianFricky42 - 27 oct. 2008 à 14:31
grep -r "define NULL" glibc-2.7
C:\Documents and Settings\proutprouttagada\Bureau\glibc-2.7\stdlib\gmp-impl.h 
00061: #define NULL ((void *) 0)

Ajouter un commentaire
Réponse
+0
moins plus
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!!!
Ajouter un commentaire
Réponse
+0
moins plus
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;
}
Ajouter un commentaire
Ce document intitulé « fonction free en C » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook