C 分段错误:11,带指针

C 分段错误:11,带指针,c,pointers,segmentation-fault,C,Pointers,Segmentation Fault,一个我无法解决的问题 调用新的函数时,我有一个分段错误。 结构正常,功能不正常 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;

一个我无法解决的问题

调用新的函数时,我有一个分段错误。 结构正常,功能不正常

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;

}
typedef结构{
国际日;
int mois;
内坦尼;
}日期;
类型定义结构{
日期**页签;
整数大小;
}颜色日期;
//行动B1.c
列日期*新列(整数大小){
int i;
颜色日期*cd;
对于(i=0;itab[i]=NULL;
}
cd->size=i;
返回光盘;
}

谢谢!:)

col_dates*cd
是一个不指向任何东西的指针。它没有任何要指向的内存,因此没有要指向的数据。所以你不能只做
cd->data,因为
数据
不在那里(您试图什么都不访问,却得到了一个segfault)

您必须首先分配内存:

col_dates *cd = malloc(sizeof(col_dates));

// access cd and return it
分配
cd
后,还要分配
cd->tab

cd->tab = malloc(size * sizeof(date *));

不要忘记在不再需要指针后释放指针

不应该是
cd->tab=malloc(大小*sizeof(日期*)?tab是一个指针数组。@DavideSpataro,是的,应该是,谢谢你注意到了这一点!非常感谢你!我忘了malloc():)更好:
malloc(sizeof(date*[size])这就是这样一个常见问题。“我试图通过一个未初始化的指针来存储随机数据”,肯定有一个很好的重复?任何人