Bonjour, j'ai un pb de malloc. Voici tout d'abord ce que j'ai fait :

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
typedef struct t_mat
{
    int dim;
    double * data;
} Tableau;
 
 
void alloc_Tableau(Tableau *t,unsigned int dim_)
{
    assert(dim_>0);
    t->dim=dim_;
    t->data=malloc(dim_*sizeof(double));
    assert(t->data!=NULL);
    int i;
    for(i=0;i<t->dim;i++)
	t->data[i]=0.;
    return ;
}
 
void free_Tableau(Tableau * t)
{
    free(t->data);
    t->data=NULL;
    return ;
}
 
void affiche_Tableau(Tableau t)
{
    if(t.data==NULL)
	printf("\nTableau inexistant\n");
    else
    {
	int i;
	for(i=0;i<t.dim;i++)
	    printf("%3.5g\t",t.data[i]);
	printf("\n");
    }
 
    return;
}
Dans le main je fais la chose suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Tableau t1;
alloc_Tableau(&t1,3);
affiche_Tableau(t1);
free_Tableau(&t1);
et là j'obtiens bien la sortie

Maintenant si je fais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Tableau * t2
alloc_Tableau(t2,3);
et bien j'ai une erreur de segmentation. Savez-vous pourquoi ?

Merci beaucoup.