我正在运行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;
我说得对吗?还是我遗漏了什么?我得到了赛格法特:11。
最佳答案
pcomp
未初始化。取消对未初始化指针的引用将调用未定义的行为。
首先,需要为pcomp
分配内存。假设您正在分配一个1CalCamp *
的数组,那么
pcomp = malloc(sizeof(CalComp *));
然后为
*pcomp
(或pcomp[0]
)分配内存。关于c - 当Malloc发生段错误11,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35193241/