Que se passe t-il sans fonction exit?
Bonjour a tous :)
Je ne suis pas tout a fait nouveau sur ce forum juste que je ne retrouve plus mon user...
Bon venons en au point :
J'ai un devoir a rendre Lundi portant sur la compilation de programmes sous Linux avec gcc 3.2 ( la version de GCC n'a que peu d'importance pour cette question ).
Etant arrive a la derniere question j'aimerais avoir votre aide :
J'ai un tout petit programme ( seulement une fonction main ) se terminant par un appel a la fonction exit( int ) definie dans stdlib.h ( vous le saviez deja hein?:p ).
La question est que se passerait-il si on enlevait l'instruction exit a la fin du code source?
J'ai essaye et le programme a certes ete execute mais a la fin j'ai recu un "segmentation fault".
Mon intuition me dit que c'est parce que le processus n'a pas ete termine et que dans ce processus le "program counter" est incremente indefiniment : ainsi il peut tenter d'executer des instructions qui ne sont pas dans les limites des adresses memoires dont le processus est autorise a acceder, ou tout simplement le PC tente d'acceder a des emplacements memoires ( instructions stockees la ou pas ) qui ne lui sont pas autorisees.
C'est la raison pour laquelle l'OS termine brutalement le processus je suppose?
Qu'en dites-vous?
Merci pour votre aide :D
Re: Que se passe t-il sans fonction exit?
Bonjour,
je répond à ce que j'ai compri, c'est à dire ça :
Citation:
Envoyé par Poseidon13
La question est que se passerait-il si on enlevait l'instruction exit a la fin du code source?
Il y a plusieurs façon de terminer un programme :
- en utilisant return, méthode propre (avec ou sans valeur, tout dépend du type de retour de la fonction)
- exit, permet de sortir d'un programme de façon brutale (à éviter), bien sûr la valeur de retour est obligatoire
- Sans rien, dans ce cas, il s'agit d'un return implicite sans valeur de retour, s'il s'agit de la sortie de la fonction main, le comportement est indéfinie puisque main doit retourner un int