Bonjour,

J'ai ce bout de code là et je voudrais savoir les choses suivantes . D'abord si vous pouvez y jeter un coup d'oeil.

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
17
int * bonjour =(int*)malloc(50*sizeof(int));
int *allo = bonjour;
int i;
for(i=1;i<=50;i++) *allo++ = i;
*(int*)(&bonjour-2)= 18;
allo= allo - 1;
*allo = 999;
allo= allo - 1;
*allo = 777;
allo= allo - 1;
*allo = 888;
printf("%d\n", (bonjour-100)[147]); // Premier affichage
printf("%d\n", allo-bonjour); // Deuxième affichage
printf("%d\n",i); // Troisième affichage
allo=(int*)(&allo+1);
printf("%p\n", **(int**)allo); // Quatrième affichage
free(bonjour);
Mon problème ce situe au niveau de la ligne après le troisième affichage. Je ne demande ou le pointeur se situe. En traçant le programme je m'appercoit que ça pointe sur la valeur 18... ce que je ne m'explique pas. Ensuite, pourquoi ça plante la quatrième affichage ?? Est-ce que c'est parce qu'on essaie de lire une adresse mémoire ???

Merci