Allocation dynamique - pointeur de pointeur de structure
Bonjour,
J'ai un petit problème pour alloué de la mémoire à un pointeur vers une structure, à l'aide de malloc().
Le programme compile, mais plante à l'execution. En mode debug, j'ai un message d'erreur : "segmentation fault". Je pense que cela vient d'une erreur lors de l'allocation.
Voilà mon code :
Code:
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
|
//La structure utilisée
struct DATA
{
char *data1;
char *data2;
};
typedef struct DATA data_t;
//Le programme
int main()
{
data_t** data;
int nbLignes = 2;
int nbCol= 4;
int i=0,j=0;
data = (data_t**)malloc(nbLignes*sizeof(data_t*));
*data = (data_t*)malloc(nbCol*sizeof(data_t));
for(i=0;i<nbLignes;i++){
for(j=0;j<nbCol; j++){
printf("\ni:%d j:%d",i,j);
data[i][j].data1 = malloc(10*sizeof(char)); //Plantage sur cette ligne (pour i=1)
data[i][j].data2 = malloc(10*sizeof(char));
}
}
//Remplissage des données puis affichage
//.........
//Libération mémoire
for(i=0;i<nbLignes;i++){
for(j=0;j<nbCol; j++){
free(data[i][j].data1);
free(data[i][j].data2);
}
}
free(*data);
free(data);
return 0;
} |
Pouvez vous m'expliquer ce qui ne va pas dans ce code ?
Merci d'avance.