将值赋给字符串后,C程序崩溃

时间:2017-07-07 11:35:38

标签: c malloc

相对较新的C,不知道我在这里做错了什么,这段代码在分配第3个字符串后崩溃了:

QW_Be *sentence = (QW_Be*)malloc(sizeof(QW_Be*));
sentence->questionword->word = words[0];
sentence->verb->word = words[1];
sentence->subject->word = words[2]; //crashes here ?

单词是char * [],这里是"句子"的结构:

typedef struct QW_Be{
    Word *questionword;
    Word *verb;
    Word *subject;
    Word *rest[];
} QW_Be;

以及' Word':

的结构
typedef struct Word{
    char *word;
    word_type type;
    char *context;
} Word;

如果您需要更多信息,请询问!

2 个答案:

答案 0 :(得分:1)

您应该分配struct的大小,而不是指向struct的指针的大小:

QW_Be *sentence = (QW_Be*)malloc(sizeof(QW_Be));

答案 1 :(得分:0)

如果你在一个字符串的赋值中崩溃,那么你可能就是在你的内存位置分配一个值。此外,请务必始终声明字符串需要多少内存,并在正确的位置分配值。