rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[C] Pointeur a NULL dans main

Posté par timekill, le mercredi 11 juillet 2007 à 10:43:48
Bonjour a tous,

J'ai un petit pb en C. (je travaille avec cygwin)

J'ai un main dans lequel je declare un pointeur, j appelle une fonction qui prend en param mon pointeur et qui libere sa memoire allouée et qui le met a NULL. Qd je vérifie dans le main, la mémoire allouée a bien été vidée met le pointeur n'est pas a NULL.

je vais résumer tout ca en un petit prog.

void func(pointeur *p)
{
free(p);
p=NULL;
}

main.c
{
pointeur *p1 = malloc(....);

func(p1);
printf("%d",p1);

}


le printf me rend une valeur alors cela devrait etre 0

je vous remercie d avance.
Configuration: Windows 2000
Firefox 2.0.0.4
Répondre à timekill  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
trinity666, le mercredi 11 juillet 2007 à 10:46:26
tu as essayé avec func (&p1)
Répondre à trinity666

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
timekill, le mercredi 11 juillet 2007 à 11:02:36
avec func(&p1) j 'ai une erreur a l execution apparemment sur le free()
Répondre à timekill

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
coucou_c_julien, le mercredi 11 juillet 2007 à 10:47:57
printf("%d",p1*);
Répondre à coucou_c_julien

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
timekill, le mercredi 11 juillet 2007 à 11:05:16
Tu veux dire printf("%d",*p1); ?

Mais la valeur sur laquelle le pointeur est, va etre a 0 mais pas le pointeur lui-meme
Répondre à timekill

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
timekill, le mercredi 11 juillet 2007 à 11:15:54
Si je copie exactement le contenu de la fonction dans le main en l applicant a p1 c'est OK, je ne comprends pas pourquoi l instruction p=NULL ne se repercute pas
Répondre à timekill

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
coucou_c_julien, le mercredi 11 juillet 2007 à 11:17:27
justement le pb de passage par reference! regarde la reponse 5, et dis moi quoi
Répondre à coucou_c_julien

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
coucou_c_julien, le mercredi 11 juillet 2007 à 11:15:45
void func(pointeur *p)
{
free(p*);
p*=NULL;
}

main.c
{
pointeur *p1 = malloc(....);

func(&p1);
printf("%d",p1);

}
Répondre à coucou_c_julien

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
timekill, le mercredi 11 juillet 2007 à 11:22:25
Merci pour ta reponse. J'ai fait comme tu m'as dit mais ca bugge a la compil
error: parse error before ')' token
error: invalid operands to binary *

apparemment il ne cpd pas l'etoile, je compile avec gcc je sais pas si ca influe
Répondre à timekill

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
coucou_c_julien, le mercredi 11 juillet 2007 à 11:29:24
et *p, ca marche pas mieux?
Répondre à coucou_c_julien

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
timekill, le mercredi 11 juillet 2007 à 11:33:01
non pas mieux il bugge a l'execution

error: incompatible type for argument 1 of `free'
Répondre à timekill

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
timekill, le mercredi 11 juillet 2007 à 12:03:18
en fait c 'est bon j 'ai trouvé

j'appelle func avec: func(&p1)

et void func(pointeur ** p)
{
free(*p);
*p=NULL;
}
Répondre à timekill

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 coucou_c_julien, le mercredi 11 juillet 2007 à 12:07:28
c'est tordu... mais apres reflexion, c'est plus logique!
Répondre à coucou_c_julien
Logiciels pertinents trouvés dans les téléchargements
Télécharger K-Lite Codec Pack Full 4.0.0K-Lite Codec Pack Full - K-Lite Codec Pack est une collection de codecs et de filtres nécessaires pour encoder ou décoder des formats audio ou vidéo....Catégorie: Codecs
Licence: Open Source
Télécharger Photofiltre 6.3.1Photofiltre - PhotoFiltre est un logiciel de retouche d’images très complet. Il permet d'effectuer des réglages simples ou avancés sur une...Catégorie: Retouche photo
Licence: Freeware/gratuit
Télécharger Hamachi 1.0.2.5Hamachi - Hamachi est une application permettant à des ordinateurs distants de créer un réseau local virtuel ( VPN ), comme s'ils...Catégorie: Réseau
Licence: Freeware/gratuit
Télécharger Aubade 1.0Aubade - Des écrans de veilles et des fonds d'écrans, vous en avez déjà vu et de toutes les couleurs ! Aujourd'hui on vous offre bien...Catégorie: Personnalisation
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [C] Pointeur a NULL dans main »