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 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 2 mai 2018 à 16:24
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 2 mai 2018 à 16:24
A voir également:
- La memoire ne peut etre en etat written / read
- Mémoire vive - Guide
- RAM : type, format, CAS, vitesse, tout sur la mémoire vive - Guide
- L'instruction à 0x emploie l'adresse mémoire 0x l'état de la mémoire ne peut pas être read ✓ - Forum Windows
- L'état actuel de votre sim ne requiert aucune activation. - Forum Free mobile
- La memoire ne peut etre "read" :( ?????? ✓ - Forum Windows
1 réponse
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
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