这样做有哪些问题:
如果我删除这行代码
为什么我不能在那里使用
void *educator_func(void *param) {
char *lineE = (char *) malloc (1024);
size_t lenE = 1024;
ssize_t readE;
FILE * fpE;
fpE = fopen(file, "r");
if (fpE == NULL) {
printf("ERROR: couldnt open file\n");
exit(0);
}
while ((readE = getline(&lineE, &lenE, fpE)) != -1) {
char *pch2E = (char *) malloc (50);
pch2E = strtok(lineE, " ");
free(pch2E);
}
free(lineE);
fclose(fpE);
return NULL;
}
如果我删除这行代码
'pch2E = strtok(lineE, " ");'
,它就可以正常工作...为什么我不能在那里使用
strtok()
?我也尝试过用strtok_r()
,但是没有成功,它会给我返回一个无效的释放地址(0x422af10地址在大小为1,024的块内被释放了0个字节)。
getline
的原型期望一个指向长度变量的指针,该变量将从getline
中作为输出填充。 - K Scott Piel微笑- K Scott Piel