条件跳转或移动取决于未初始化的值 strcat

Conditional jump or move depends on uninitialised value(s) strcat

我知道发生这个 valgrind 错误是因为我试图使用未初始化的东西。 下面的代码是导致此错误的代码。它正在做的是尝试读取 Racket 代码并获取每个符号,例如 + 或 define。 (标记化) 我不希望您彻底理解代码,因为还有很多其他代码可以理解它在做什么。 但是,如果您能告诉我您对该行出现此错误的原因的看法,我将不胜感激,symbol = strcat(symbol, newsymbol);

char* newsymbol = talloc(sizeof(char)*2);
                *newsymbol = charRead;
                newsymbol[1] = '[=10=]';
                symbol = strcat(symbol, newsymbol);

因为 symbol 没有 nul 终止你需要 nul 终止它然后再传递给 strcat().