一个我无法解决的问题。。。
调用new_col()函数时出现分段错误。结构正常,功能不正常。
typedef struct {
int jour;
int mois;
int annee;
} date;
typedef struct {
date** tab;
int size;
} col_dates;
// Fonction B1.c
col_dates* new_col(int size) {
int i;
col_dates* cd;
for(i=0; i<size; i++) {
cd->tab[i] = NULL;
}
cd->size = i;
return cd;
}
谢谢!:)
col_dates *cd;
是一个不指向任何东西的指针。它没有任何内存可以指向,因此也没有数据可指向。所以你不能只做cd->data;
,因为data
不在那里(你试图访问nothing并获得segfault)。
你必须首先分配内存:
col_dates *cd = malloc(sizeof(col_dates));
// access cd and return it
分配cd
后,也分配cd->tab
:
cd->tab = malloc(size * sizeof(date *));
不要忘记free
,指针在您不再需要它之后返回。