相对较新的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;
如果您需要更多信息,请询问!
答案 0 :(得分:1)
您应该分配struct的大小,而不是指向struct的指针的大小:
QW_Be *sentence = (QW_Be*)malloc(sizeof(QW_Be));
答案 1 :(得分:0)
如果你在一个字符串的赋值中崩溃,那么你可能就是在你的内存位置分配一个值。此外,请务必始终声明字符串需要多少内存,并在正确的位置分配值。