Bonjour à tous,
J'ai un problème avec une fonction que j'ai développé. La fonction prend un int * et un int en paramètre et crée un tableau de la taille précisée :
Sur le même principe, j'ai une fonction d'affichage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void mk_tab(int *t,int n) { t = (int *)malloc(n*sizeof(int)); int i; for (i=0; i<n; i++) t[i]=i; }
Dans le main(), je procède aux appels ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void visu_tab(int *t, int n) { int i; printf("{ "); for (i=0; i<n; i++) {printf("%d ",t[i]);} printf("}\n"); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int *t; int i,j; for (j=1; j<10; j++) { mk_tab(t,j); visu_tab(t,j); }
Je m'attends à avoir en sortie :
Or, j'ai des valeurs complètement farfelues :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 { 0 } { 0 1 } { 0 1 2 } { 0 1 2 3 } { 0 1 2 3 4 } { 0 1 2 3 4 5 } { 0 1 2 3 4 5 6 } { 0 1 2 3 4 5 6 7 } { 0 1 2 3 4 5 6 7 8 }
A première vue, ça pue le débordement mémoire à plein nez, mais je n'arrive pas à en trouver l'explication. Quelqu'un a une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 { -1 } { -1 2088999640 } { -1 2088999640 2088857728 } { -1 2088999640 2088857728 0 } { -1 2088999640 2088857728 0 0 } { -1 2088999640 2088857728 0 0 0 } { -1 2088999640 2088857728 0 0 0 4198944 } { -1 2088999640 2088857728 0 0 0 4198944 0 } { -1 2088999640 2088857728 0 0 0 4198944 0 2020893505 }
PS : Je développe sous Dev-C++
Partager