FILE *fp;
char *in;
char *sa[20];
char inn[100];
//other stuff here
for(huge loop) {
fp = popen(filename, "r");
fscanf(fp, "%100s", inn);
in = strtok(inn, "=");
i = 0;
while(in != NULL) {
sa[i++] = in;
in = strtok (NULL, "=");
}
}
这在我的linux机器上编译并运行了大约4分钟,因为它会对大量数据文件进行排序,然后进行分段错误。它直到这一点都正确运行,并且这一点取决于我做了多少事情,所以我强烈怀疑有内存泄漏,我应该释放指针。但我认为没有malloc
编译器会自动分配并取消分配指针内存。我究竟做错了什么?指针,内存不足,分段错误?
谢谢。
你在哪里做'pclose'? –
另外,你知道'strtok'不会返回唯一的指针,并且它返回指向它标记的字符串的指针?这意味着'sa'中的所有*指针将指向'inn'中的不同位置。如果'inn'是一个局部变量而'sa'不是,那么你在你之前就有麻烦了。 –
不检查'popen()'的返回值是邪恶的。 – Asblarf