여기 내 코드가 있는데, 세분화 오류가 발생하고 이유를 모르겠다 ... 'n'크기의 격자를 만들고 있는데, 'tab'은 그의 형식이 cellule 인 배열이다. 셀은 2 개의 값을가집니다. 그래서 'creer_grille'함수에서 malloc (크기는 4 6 또는 8이 될 수 있음) 배열을 만들고 -1과 0으로 셀 값을 초기화합니다. 다음 함수에서 'creer_grille' 기능. 당신의 creer_grille
기능에왜 이것이 나에게 세그 폴트를 줘?
typedef struct
{
int val;
int initial;
} cellule;
typedef struct
{
cellule *tab;
int n;
} grille;
grille *creer_grille(int n)
{
grille *g;
int i;
assert(n == 4 || n == 6 || n == 8 && "Taille de la grille différent de 4,6 ou 8");
g->n = n;
g = malloc(sizeof(int) * (n*n));
if (g->tab == NULL)
exit(-1);
for (i = 0; i < n*n; i++)
{
g->tab[i].val = -1;
g->tab[i].initial = 0;
}
return g;
}
void detruire_grille(grille * g)
{
free(g);
}
void test_creer_grille(){
int i,k;
for(k = 4; k <= 8 ; k+=2){
grille * g = creer_grille(k);
assert(g->n == k && "Problème dans le champ n de la grille");
//Vérification que les cellules sont vides
for(i = 0 ; i < k * k ; i++){
assert(g->tab[i].val == -1 && "Problème : cellule non vide !");
assert(g->tab[i].initial == 0 && "Problème : cellule initiale !");
}
detruire_grille(g);
}
printf("Test de la fonction creer_grille OK !\n");
}
int main()
{
test_creer_grille();
}