Bonjour à tous, suite à des déboires rencontrés dans l'exécution d'un programme C++ que je développe (la compilation se déroulant très bien) je me suis dit pourquoi ne pas regarder l'endroit du code assembleur où le programme plante.

Voici donc la partie du code concernée, apparemment le programme a un problème ligne 00403F77
Au début de l'exécution ecx =0 et eax = 208896 (soit 33000 en hexa)
Du coup arrivée ligne 00403F77 eax = 204800.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
00403F64  cmp         ecx,eax  
00403F66  jb          00403F72  
00403F68  mov         eax,ecx  
00403F6A  pop         ecx  
00403F6B  xchg        eax,esp  
00403F6C  mov         eax,dword ptr [eax]  
00403F6E  mov         dword ptr [esp],eax  
00403F71  ret  
00403F72  sub         eax,1000h  
00403F77  test        dword ptr [eax],eax  
00403F79  jmp         00403F64
Et le programme s'arrête avec en message de débugage :
Exception non gérée à 0x00403f77 dans prog.exe*: 0xC00000FD: Stack overflow.
Si quelqu'un pouvait me lancer sur le bug que ça donne... je comprend pas trop cet histoire de test dword .... il sevrait pas y avoir un branchement conditionnel derrière, à quoi sert exactement le test s'il est suivi d'un jmp ?

Voilà en espérant que vous pourrez m'aider ...

Merci