Bonsoir tout le monde,
je suis entrain de développer un petit programme et je l'ai passé sous valgrind dans le but de voir d'éventuels problèmes.
J'ai une suite d'erreurs que je ne comprends pas.
je ne peux pas poster le code, il commence à être un peu trop gros.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ==5060== Invalid write of size 4 ==5060== at 0x1089CB: execute (vm.c:37) ==5060== by 0x108833: main (main.c:47) ==5060== Address 0x4a2923c is 11,164 bytes inside an unallocated block of size 4,184,392 in arena "client"
Globalement j'alloue une zone mémoire de 4096 octets.
(Lorsque j'éxecute j'affiche son addresse de début et de fin j'obtiens ceci : 0x4a25240 - 0x4a29240)
Code : Sélectionner tout - Visualiser dans une fenêtre à part int *p_stack = calloc(4, 1024)
Sur cette zone mémoire j'y mets un pointeur :
L'erreur de valgrind est du à cause de ce bout de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part int *sp = stack + 1024 * 4
En regardant l'erreur donné par valgrind je constate qu'il parle de l'adresse 0x4a2923c qui serait dans une zone non allouée. Alors que normalement cette zone est bien allouée (je test bien le retour de mon calloc).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 case PUSH: printf("PUSH\n"); *(--ps_pr->sp) = ax; printf("%d\n", *(ps_pr->sp)); break;
(De plus je précise que l'execution de mon programme ne recontre aucun problème, enfin jusqu'à présent !)
Je ne vois pas trop quoi faire.
En vous remerciant par avance pour d'éventuelles idées,
Je vous souhaites tout de même de bonnes fêtes de fin d'année !
Cordialement,
Reverse_
Partager