对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 ?
单词是一个字符 *[ ],下面是"句子"的结构:
typedef struct QW_Be{
Word *questionword;
Word *verb;
Word *subject;
Word *rest[];
} QW_Be;
这是"单词"的结构:
typedef struct Word{
char *word;
word_type type;
char *context;
} Word;
如果您需要更多信息,请询问!
您应该分配结构的大小,而不是指向结构的指针的大小:
QW_Be *sentence = (QW_Be*)malloc(sizeof(QW_Be));
如果您在字符串的赋值中崩溃,则可能是您在内存中不属于您的位置分配值。此外,请确保始终声明字符串需要多少内存,并在正确的位置分配值。