我在一些内存问题上遇到了麻烦。问题是当释放行(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;
答案 0 :(得分:1)
如果问题出在 if 阻止失败,则free(line)不起作用,那么您可能想检查 line 是否实际上指向某物。 / p>
由于您没有初始化 line (这是指向char的指针),因此使其指向某个内存位置的唯一其他可能性是调用 read_line 。 / p>
现在,我不确定 read_line 的功能,但是尝试传递 line 而不是&line 吗?