Le plus simple est d'ajouter un niveau d'indirection à adresseDeRetour :
void (**adresseDeRetour) (void) = (ptr + 28);
Sinon ton appel saute dans la pile (à l'adresse où se trouve l'adresse de retour).
Autre problème : tu ne restaures pas le cadre de pile de l'appelant. Quand tu rends la main à main() (pour ainsi dire), on reste dans addOne() en réalité et à la fin de main(), on revient après l'appel de addOne(). Ajoute un printf("coucou2\n"); après l'appel à addOne() et tu verras que "coucou2" sera affiché deux fois.
# .
Posté par beaulieu1 . En réponse au message essayer de recupérer l'adresse de retour d'une fonction. Évalué à 8.
Salut,
Le plus simple est d'ajouter un niveau d'indirection à adresseDeRetour :
Sinon ton appel saute dans la pile (à l'adresse où se trouve l'adresse de retour).
Autre problème : tu ne restaures pas le cadre de pile de l'appelant. Quand tu rends la main à main() (pour ainsi dire), on reste dans addOne() en réalité et à la fin de main(), on revient après l'appel de addOne(). Ajoute un printf("coucou2\n"); après l'appel à addOne() et tu verras que "coucou2" sera affiché deux fois.