Bonjour,

J'aimerais savoir quelle valeur ce programme en C va-t-il afficher? Et pourquoi?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void function(int a, int b, int c)  {
char buffer1[5];
char buffer2[10];
char *ret;
ret = buffer1 + 12;
(*ret) += 8;
}
 
 
void main()  {
int x;
x = 0;
function(1,2,3);
x = 1;
printf("%d\n",x);
}
Sur ma machine, son exécution (en C et en C++) m'a affiché " 1 ".

Mais j'aimerais savoir s'il y a le risque d'avoir un buffer overflow (dépassement de tampon) avec ce programme dans un autre type de machine ?

Merci.