Test pour faire déborder la pile en c
Bonjour,
Voila je voudrais montrer comment faire déborder une pile en langage c.
Lle programme suivant est celui (d'une très mauvaise implémentation) du calcul du PGCD (plus grand commun diviseur), donc on compilant mon programme, la fêtre d'erreur m'affiche
"Début du Thread : ID du thread : 6048. Processus UnitTest1.exe (4076)
Sortie du Thread : ID du thread : 6048. Processus UnitTest1.exe (4076)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| //Code C
//Bibliothéques
#include "stdlib.h"
#include "stdio.h"
//------------------------------------------
//Fonction pgcd
int pgcd (int x, int y)
{
int min; int res;
min = minimum (x, y);
res = aux (x, y, min);
}
//Fonction minimum
int minimum (int x, int y)
{
if (x > y)
{ return y; }
else
{ return x; }
}
//Fonction aux
int aux (int x, int y, int z)
{
int a;
if (((x % z) == 0) && ((y % z) == 0))
{ return z; }
else
{ a = aux(x, y, z-1); }
}
//Programme principale
void main ()
{
int pgcd (int, int);
int minimum (int, int);
int aux(int, int, int);
int resultat;
resultat = pgcd(11062556, 21376161);
printf("Résultat: ",resultat);
} |
Je joints aussi le fichier journal si ça peut vous aider:
Citation:
Début du Thread : ID du thread : 4524. Processus UnitTest1.exe (4076)
Début de processus : C:\Users\Ordidi\Desktop\Debug\UnitTest1.exe. Adresse de base : $00400000. Processus UnitTest1.exe (4076)
Chargement de module : UnitTest1.exe. Contient des infos de débogage. Adresse de base : $00400000. Processus UnitTest1.exe (4076)
Chargement de module : ntdll.dll. Pas d'infos de débogage. Adresse de base : $771D0000. Processus UnitTest1.exe (4076)
Chargement de module : KERNEL32.dll. Pas d'infos de débogage. Adresse de base : $764D0000. Processus UnitTest1.exe (4076)
Chargement de module : vcl100.bpl. Pas d'infos de débogage. Adresse de base : $200E0000. Processus UnitTest1.exe (4076)
Chargement de module : rtl100.bpl. Pas d'infos de débogage. Adresse de base : $20000000. Processus UnitTest1.exe (4076)
Chargement de module : OLEAUT32.dll. Pas d'infos de débogage. Adresse de base : $77380000. Processus UnitTest1.exe (4076)
Chargement de module : ole32.dll. Pas d'infos de débogage. Adresse de base : $77080000. Processus UnitTest1.exe (4076)
Chargement de module : msvcrt.dll. Pas d'infos de débogage. Adresse de base : $75DF0000. Processus UnitTest1.exe (4076)
Chargement de module : GDI32.dll. Pas d'infos de débogage. Adresse de base : $75A90000. Processus UnitTest1.exe (4076)
Chargement de module : USER32.dll. Pas d'infos de débogage. Adresse de base : $75D40000. Processus UnitTest1.exe (4076)
Chargement de module : ADVAPI32.dll. Pas d'infos de débogage. Adresse de base : $75FB0000. Processus UnitTest1.exe (4076)
Chargement de module : RPCRT4.dll. Pas d'infos de débogage. Adresse de base : $761A0000. Processus UnitTest1.exe (4076)
Chargement de module : VERSION.dll. Pas d'infos de débogage. Adresse de base : $75190000. Processus UnitTest1.exe (4076)
Chargement de module : MPR.dll. Pas d'infos de débogage. Adresse de base : $75510000. Processus UnitTest1.exe (4076)
Chargement de module : imagehlp.dll. Pas d'infos de débogage. Adresse de base : $77300000. Processus UnitTest1.exe (4076)
Chargement de module : WSOCK32.dll. Pas d'infos de débogage. Adresse de base : $74330000. Processus UnitTest1.exe (4076)
Chargement de module : WS2_32.dll. Pas d'infos de débogage. Adresse de base : $75BB0000. Processus UnitTest1.exe (4076)
Chargement de module : NSI.dll. Pas d'infos de débogage. Adresse de base : $772F0000. Processus UnitTest1.exe (4076)
Chargement de module : OLEACC.dll. Pas d'infos de débogage. Adresse de base : $73E20000. Processus UnitTest1.exe (4076)
Chargement de module : COMCTL32.dll. Pas d'infos de débogage. Adresse de base : $73380000. Processus UnitTest1.exe (4076)
Chargement de module : SHELL32.dll. Pas d'infos de débogage. Adresse de base : $765B0000. Processus UnitTest1.exe (4076)
Chargement de module : SHLWAPI.dll. Pas d'infos de débogage. Adresse de base : $75BE0000. Processus UnitTest1.exe (4076)
Chargement de module : WINSPOOL.DRV. Pas d'infos de débogage. Adresse de base : $728A0000. Processus UnitTest1.exe (4076)
Chargement de module : COMDLG32.dll. Pas d'infos de débogage. Adresse de base : $75EA0000. Processus UnitTest1.exe (4076)
Chargement de module : oledlg.dll. Pas d'infos de débogage. Adresse de base : $746A0000. Processus UnitTest1.exe (4076)
Chargement de module : borlndmm.dll. Pas d'infos de débogage. Adresse de base : $010F0000. Processus UnitTest1.exe (4076)
Chargement de module : cc3280mt.dll. Pas d'infos de débogage. Adresse de base : $32800000. Processus UnitTest1.exe (4076)
Chargement de module : IMM32.dll. Pas d'infos de débogage. Adresse de base : $75D20000. Processus UnitTest1.exe (4076)
Chargement de module : MSCTF.dll. Pas d'infos de débogage. Adresse de base : $76270000. Processus UnitTest1.exe (4076)
Chargement de module : LPK.dll. Pas d'infos de débogage. Adresse de base : $75D10000. Processus UnitTest1.exe (4076)
Chargement de module : USP10.dll. Pas d'infos de débogage. Adresse de base : $75B30000. Processus UnitTest1.exe (4076)
Chargement de module : COMCTL32.dll. Pas d'infos de débogage. Adresse de base : $74830000. Processus UnitTest1.exe (4076)
Chargement de module : UxTheme.dll. Pas d'infos de débogage. Adresse de base : $74A90000. Processus UnitTest1.exe (4076)
Chargement de module : UNKNOWN_MODULE_8. Pas d'infos de débogage. Adresse de base : $74340000. Processus UnitTest1.exe (4076)
Chargement de module : RICHED20.dll. Pas d'infos de débogage. Adresse de base : $70470000. Processus UnitTest1.exe (4076)
Début du Thread : ID du thread : 6048. Processus UnitTest1.exe (4076)
Sortie du Thread : ID du thread : 6048. Processus UnitTest1.exe (4076)
Donc ma question est la suivante: est ce que mon code est juste et que le language C, ne peut pas gérer de si grand nombre, ou est ce que j'ai commis une erreur quelques part et que je suis vraiment nul de ne pas l'avoir remarquer!!!
Merci a+++