我正在运行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/

10-11 20:55