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.
pcomp没有初始化.取消引用未初始化的指针会调用未定义的行为.
首先,您需要为内存分配内存pcomp.假设您正在分配1的数组CalCamp *,那么
pcomp = malloc(sizeof(CalComp *));
Run Code Online (Sandbox Code Playgroud)
然后为*pcomp(或pcomp[0])分配内存.