Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1765 connectés 

 


Dernière réponse
Sujet : question en c: pour arreter le programme.. on fait coment?
bjbebert Pour la mémoire allouée par malloc, y a pas de problème, elle est libérérée de fait par l'OS.
Par contre, pour tout ce qui est lié au système (handles de fenêtres, de fichiers..) vaut mieux faire le ménage soi-même.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
bjbebert Pour la mémoire allouée par malloc, y a pas de problème, elle est libérérée de fait par l'OS.
Par contre, pour tout ce qui est lié au système (handles de fenêtres, de fichiers..) vaut mieux faire le ménage soi-même.
antp

flo850 a écrit a écrit :

 
honnetement , je mettrai pas ma tete a couper ( j'en ai qu'une ) , mais un de mes mains , pourquoi pas .
je pense que la meilleure preuve , c'est que si tu " oublie " de faire des free , ils sont fait a la fin de ton code , de meme pour les fichiers que tu ouvre et que tu oublie de fermer ( attention quand meme au merde avec les fichier ouvert en ecriture , ceux la , il faut les fermer pour etre sur )  




 
c'est normalement l'OS qui vire toute la mémoire allouée au prog.
En tout cas Unix/Linux et Win NT le font.
quand à savoir si win 3.x/9x le fait, ça je suppose mais pas entièrement en tout cas.
 
le coup du exit au lieu du return ca me semble bizarre quand même...

 

[edtdd]--Message édité par antp--[/edtdd]

246tNt De toute facon moi je dit :
 
* Fermer et dessalouer TOUT proprement pour etre sur.
* exit(errcode); Pour au cas ou t'aurait foiré ton coup ...
flo850

leschmolluck a écrit a écrit :

FLO850, tu es sur de ton coup ?
 
Le fait que GCC rajoute EXIT à la fin du source ?
Parce que si c'est le cas c'est plutôt sympas :) :) :)
 
(un fois de plus vive ce petit compilateur génial :) )  




honnetement , je mettrai pas ma tete a couper ( j'en ai qu'une ) , mais un de mes mains , pourquoi pas .
je pense que la meilleure preuve , c'est que si tu " oublie " de faire des free , ils sont fait a la fin de ton code , de meme pour les fichiers que tu ouvre et que tu oublie de fermer ( attention quand meme au merde avec les fichier ouvert en ecriture , ceux la , il faut les fermer pour etre sur )

LeSchmolluck FLO850, tu es sur de ton coup ?
 
Le fait que GCC rajoute EXIT à la fin du source ?
Parce que si c'est le cas c'est plutôt sympas :) :) :)
 
(un fois de plus vive ce petit compilateur génial :) )
flo850 return sort juste de la fonction ( meme si la fonction s'appelle main ) alorsd que exit fait en plus le mengae et la vaisselle .
de toute maniere , ca fait parti des trucs géré par le compilo , faut pas s'embeter avec .
le return a la fin du main est conseillé pour ne as avoir un warnig de declaration de type de foction ( warning : end of non-void function )

 

[edtdd]--Message édité par flo850--[/edtdd]

Krueger Cool, on apprend encore des choses tous les jours même après quelques années de pratique du C (enfin le C++ maintenant). :)
 

Citation :

sous linux , gcc ajoute en fin de ton prog exit(0) si tu n'a rien mis etdonc fais le menage a ta place ( trop fort )


Mais si on fait un return dans le main, y a plus d'exit(0)?

 

[edtdd]--Message édité par Krueger--[/edtdd]

flo850 avant de le faire sous windows , il faut liberer toute la memoire allouée dynamiquement ( avec malloc/calloc ..) en utilisant la fonction free.
sous linux , gcc ajoute en fin de ton prog exit(0) si tu n'a rien mis etdonc fais le menage a ta place ( trop fort )
LeSchmolluck le  
return (x);
dans le main me semble une bonne solution, le x dépendant  
de la définition du main. Il est pas nécéssaire de mettre
quoique ce soit si le main est déclaré :
void main ()
 
Mais bon... attention quand même ça marche sous Unix :sol: mais
sous Windows un reboot risque d'être nécessaire pour  
libérer la mémoire et tuti quanti... :D:D:D (même pour XP)
 
c'est une méthode violente tout de même... :gun:
antp halt c'est pas un peu sauvage comme fin de programme ?
dans la doc de Delphi, pour halt :

Citation :

Initiates abnormal termination of a program.


 
en C y a abort qui est du même genre.

 

[edtdd]--Message édité par antp--[/edtdd]

flo850 a la fin du main tout simplement ....
non je deconne , moi je vote pour exit (x), parcque cette fonction s'amuse a refermer tous les flux ,ouvert ( fichier ou autre ) , a liberer la memeoire allouée dynamiquement .En gros , elle fait le menage .
Sous linux .
sous windows , c pas sur qu'elle fasse tant de chose aussi bien .
Gounok Essaie exit(x), avec x un nombre pour te repérer si t'en mets plusieurs exit(x) dans ton programme.
Si tu veux t'arrêter à cause d'une erreur essaie aussi perror("Texte affiché si ça plante à ce moment là" ), qui est suivi d'un texte explicatif si tu le fais après une opération susceptible d'en générer un, par exemple si une ouverture de fichier avec open qui renvoie -1...
Bon c'est pas très clair ce que je raconte mais rapporte toi aux docs pour ces 2 fonctions.
Voilà quand même des exemples :
 
 
id=shmget((key_t)503,sizeof(int),0); // shmget rend -1 en cas d'erreur
 if (id==-1)
 {
  perror("Erreur lors de l'identification du segment de mémoire partagée principal" );
  exit(0);
}
 
 
Bon courage :hello:
ddpforman d'accord .. merci.. déjà  
si vous avez d'autre solution n'hesitez pas;. merci.. !!! :-)
Alload Je suis pas du tout sûr, mais je pense que si tu fais un return 1; dans la fonction main() ça arrete le prog.
ddpforman voila, je voudrais savoir comment on peut arreter un programme c:
avec quel procedure? genre en turbo pascal: il y a halt
et en c .. il y a quoi?
merci vraiment pour toutes les réponses que vous donnez à chaque fois.. et qui nous aide beaucoup !! BEAUCOUP!!
je parle pour beaucoup de personne je pensee.. la
merci

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)