分段错误:11,带指针

-3 c pointers segmentation-fault

一个我无法解决的问题......

当我调用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;

}
Run Code Online (Sandbox Code Playgroud)

谢谢!:)

For*_*Bru 6

col_dates *cd;一个指向任何东西的指针.它没有任何内存指向,因此没有数据要指向.所以你不能这样做cd->data;,因为data不存在(你试图不访问任何东西并获得段错误).

你必须先分配内存:

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

// access cd and return it
Run Code Online (Sandbox Code Playgroud)

分配后cd,也分配cd->tab:

cd->tab = malloc(size * sizeof(date *));
Run Code Online (Sandbox Code Playgroud)

free在您不再需要它之后不要忘记返回的指针.

  • 不应该是`cd-> tab = malloc(size*sizeof(date*));`?tab用于指针数组. (2认同)