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])代码>这就是这样一个常见问题。“我试图通过一个未初始化的指针来存储随机数据”,肯定有一个很好的重复?任何人