我正在运行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。
答案 0 :(得分:5)
pcomp
未初始化。取消引用未初始化的指针会调用未定义的行为
首先,您需要为pcomp
分配内存。假设您正在分配1 CalCamp *
的数组,那么
pcomp = malloc(sizeof(CalComp *));
然后为*pcomp
(或pcomp[0]
)分配内存。