【发布时间】:2018-10-26 06:57:11
【问题描述】:
我遇到了一些内存问题。问题是当线路被释放时(free(line)),有一个
free(): 大小无效错误。
据我所知,sscanf 不会修改传递给它的字符串。奇怪的是,if 语句中的free(line) 工作正常。我不确定问题出在哪里,因为我已经在程序的其他部分中像这样释放了char*,没有任何问题,尽管没有调用 sccanf。任何帮助将不胜感激。
char* line;
read_line(read, &line, 0);
printf("%s\n", line); //gives "playinfoA/30"
char playerLetter[1];
char numberOfPlayers[2];
char temp[1];
if (sscanf(line, "playinfo%1s%1s%s", playerLetter, temp,
numberOfPlayers) != 3) {
free(line);
return -1;
}
//free(line);
return 0;
【问题讨论】:
-
"%1s"需要一个长度为 2 的数组,例如char temp[2]; -
与@user3386109的评论有关,
numberOfPlayers[2]不够大,无法容纳"30"