La memoire ne peut etre en etat written / read
Fermé
hammazit
Messages postés
1
Date d'inscription
mardi 1 mai 2018
Statut
Membre
Dernière intervention
1 mai 2018
-
Modifié le 1 mai 2018 à 14:54
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 2 mai 2018 à 16:24
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 2 mai 2018 à 16:24
A voir également:
- La memoire ne peut etre en etat written / read
- Mémoire vive - Guide
- L'état actuel de votre sim ne requiert aucune activation ✓ - Forum Mobile
- Province état yesstyle - Forum Consommation & Internet
- L'instruction à 0x emploie l'adresse mémoire 0x l'état de la mémoire ne peut pas être read ✓ - Forum Windows
- État/province région exemple ✓ - Forum Webmastering
1 réponse
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié le 2 mai 2018 à 16:27
Modifié le 2 mai 2018 à 16:27
Salut hammazit,
La compilation de ton programme avec gcc et les warnings montre qu'il produit de nombreux avertissements :
Les avertissements n'empêchent pas la compilation, mais te préviennent en général d'un comportement dangereux, inadéquat ou non recommandé à rectifier à moins que tu saches très exactement ce que tu fais. Ils révèlent des bogues dans 90% des cas.
Tu ne dois pas ignorer les avertissements, mais les traiter un par un, comprendre pourquoi ils se manifestent et rectifier ton code afin que ton code compile proprement, sans warnings. Commence par le premier. Après avoir corrigé un avertissement, recompile, et passe au suivant (d'autres apparaîtront éventuellement).
Une des erreurs récurrentes que tu fais est que, parfois, tu ne passes pas à scanf un pointeur, comme tu le devrais.
Par exemple, en ligne 322,
Ce type d'erreur est signalé par les warnings à de nombreux endroits de ton code.
Ainsi, pour
Corrige ton code et vois si cela fait disparaître tes erreurs mémoire.
Dal
La compilation de ton programme avec gcc et les warnings montre qu'il produit de nombreux avertissements :
$ gcc -Wall 35342194.c
35342194.c: In function ‘afficher_p’:
35342194.c:101:2: warning: too many arguments for format [-Wformat-extra-args]
printf("Prenom patient s",p->prenom) ;
^
35342194.c: In function ‘ajout_rdv’:
35342194.c:141:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d",tmp->code);
^
35342194.c:144:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d",tmp->date_rdv.j);
^
35342194.c:146:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d",tmp->date_rdv.m);
^
35342194.c:148:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d",tmp->date_rdv.an);
^
35342194.c: In function ‘ajouter_r’:
35342194.c:160:3: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘char *’ [-Wformat=]
scanf("%d", &verif);
^
35342194.c: In function ‘saisie_m’:
35342194.c:212:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d",tmp->code);
^
35342194.c:216:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d",tmp->qua);
^
35342194.c: In function ‘main’:
35342194.c:294:6: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]
scanf("%d",choi) ;
^
35342194.c:285:54: warning: unused variable ‘pa’ [-Wunused-variable]
listpatient p=NULL ; listrdv rdv=NULL ; listpatient pa=NULL ; listmedic m=NULL ;
^
35342194.c: In function ‘modif_r’:
35342194.c:189:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
35342194.c: In function ‘main’:
35342194.c:294:6: warning: ‘choi’ may be used uninitialized in this function [-Wmaybe-uninitialized]
scanf("%d",choi) ;
^
35342194.c:298:14: warning: ‘i’ may be used uninitialized in this function [-Wmaybe-uninitialized]
case 3:chercher_p(i) ;
Les avertissements n'empêchent pas la compilation, mais te préviennent en général d'un comportement dangereux, inadéquat ou non recommandé à rectifier à moins que tu saches très exactement ce que tu fais. Ils révèlent des bogues dans 90% des cas.
Tu ne dois pas ignorer les avertissements, mais les traiter un par un, comprendre pourquoi ils se manifestent et rectifier ton code afin que ton code compile proprement, sans warnings. Commence par le premier. Après avoir corrigé un avertissement, recompile, et passe au suivant (d'autres apparaîtront éventuellement).
Une des erreurs récurrentes que tu fais est que, parfois, tu ne passes pas à scanf un pointeur, comme tu le devrais.
Par exemple, en ligne 322,
scanf("%d",choi);provoque une erreur de segmentation, comme "choi" est déclaré en tant que
int choi;, alors que tu devrais passer l'adresse de "choi" à scanf, comme cela :
scanf("%d",&choi);... tu envoies à scanf le contenu de "choi" (qui de plus n'est pas initialisé) au lieu d'envoyer l'adresse mémoire de "choi".
Ce type d'erreur est signalé par les warnings à de nombreux endroits de ton code.
Ainsi, pour
scanf("%d",tmp->code);en ligne 141, qui devrait être
scanf("%d",&tmp->code);...
Corrige ton code et vois si cela fait disparaître tes erreurs mémoire.
Dal