2016-05-12 94 views
-3

一个问题,我无法解决...分割错误:11,带指针

我有一个分段错误,当我调用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; 

} 

谢谢! :)

+0

这是一个常见问题解答。当然,对于“我试图通过未初始化的指针存储随机的东西”的某个地方肯定有一个好的副本?任何人? – Lundin

回答

6

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

你必须先分配内存:

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

// access cd and return it 

后你分配cd,分配cd->tab还有:

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

不要忘了free你不需要后返回的指针它了。

+2

不应该是'cd-> tab = malloc(size * sizeof(date *));'?选项卡旨在成为指针数组。 –

+0

@DavideSpataro,应该,谢谢你的注意! – ForceBru

+0

非常感谢!我忘了malloc():) – HapLifeMan