当Malloc时,Segfault 11

Exi*_*kle 0 c malloc struct segmentation-fault

我正在运行valgrind来调试代码,当我在这行中malloc它的段错误时:

CalComp **const pcomp; //Have to define it like this
(*pcomp) = malloc(sizeof(CalComp));
Run Code Online (Sandbox Code Playgroud)

我不确定为什么会这样.

这是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;
Run Code Online (Sandbox Code Playgroud)

我不是正确地使用它吗?或者我错过了什么?我得到了Segfault:11.

hac*_*cks 5

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

pcomp = malloc(sizeof(CalComp *)); 
Run Code Online (Sandbox Code Playgroud)

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