当Malloc时,Segfault 11

时间:2016-02-04 05:34:12

标签: c struct segmentation-fault malloc

我正在运行valgrind来调试一个代码,当我在这行中对它进行malloc的时:

CalComp **const pcomp; //Have to define it like this
(*pcomp) = malloc(sizeof(CalComp));

我不确定为什么会这样。

这是CalComp:

typedef struct CalComp {    // calendar's (sub)component
    char *name;         // uppercase
    int nprops;         // no. of properties
    CalProp *prop;      // -> first property (or NULL)
    int ncomps;         // no. of subcomponents
    CalComp *comp[];    // component pointers (flexible array member)
} CalComp;

Aren我是否正确地进行了购物?或者我错过了什么?我得到了Segfault:11。

1 个答案:

答案 0 :(得分:5)

pcomp未初始化。取消引用未初始化的指针会调用未定义的行为 首先,您需要为pcomp分配内存。假设您正在分配1 CalCamp *的数组,那么

pcomp = malloc(sizeof(CalComp *)); 

然后为*pcomp(或pcomp[0])分配内存。