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:
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: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: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:
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_