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 :

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;
}
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
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");
 
}
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
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 :

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 }
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
{ -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 }
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?

PS : Je développe sous Dev-C++