Bonjour, j'ai une erreur de segmentation avec mon module EnsembleChaine que je n'arrive pas à résoudre depuis plusieurs heures. Mon module stocke des chaînes de caractère dans un tableau.

Voici ma structure et mon constructeur qui pose problème :

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
struct EnsembleChaine
{
    char** s;
    int nb;
};
 
EnsembleChaine creerEnsembleChaine(void)
{
    EnsembleChaine this;
    this->s=malloc(sizeof(char*)*SIZE_DEFAULT);
    for(int i=0;i<SIZE_DEFAULT;i++)
    {
        this->s[i]=malloc(sizeof(char)*SIZE_DEFAULT);
        for(int j=0;j<SIZE_DEFAULT;j++)
        {
            this->s[i][j]='\0';
        }
    }
    this->nb=0;
    return this;
}
J'ai une erreur de segmentation sur cette ligne :

Pourtant, pour moi tout est correct. J'ai enlevé la boucle for comme ceci :

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
EnsembleChaine creerEnsembleChaine(void)
{
    EnsembleChaine this;
    this->s=malloc(sizeof(char*)*SIZE_DEFAULT);
    for(int i=0;i<SIZE_DEFAULT;i++)
    {
        this->s[i]=malloc(sizeof(char)*SIZE_DEFAULT);
        //for(int j=0;j<SIZE_DEFAULT;j++)
        //{
            //this->s[i][j]='\0';
        //}
    }
    this->nb=0;
    return this;
}
Et ça fonctionne ! Pourtant quand je laisse la boucle for vide comme ceci :

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
EnsembleChaine creerEnsembleChaine(void)
{
    EnsembleChaine this;
    this->s=malloc(sizeof(char*)*SIZE_DEFAULT);
    for(int i=0;i<SIZE_DEFAULT;i++)
    {
        this->s[i]=malloc(sizeof(char)*SIZE_DEFAULT);
        for(int j=0;j<SIZE_DEFAULT;j++)
        {
            //this->s[i][j]='\0';
        }
    }
    this->nb=0;
    return this;
}
Ça ne fonctionne plus et ça me déplace l'erreur de segmentation ici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
this->s[i]=malloc(sizeof(char)*SIZE_DEFAULT);
Du coup, je ne comprends pas ce qui ne va pas. En espérant une aide de votre part, car là j'en peux plus... Merci.