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
编译器会自动分配和释放指针内存。我做错什么了?谢谢。
最佳答案
在inn
数组中没有空终止符的空间。
每个pclose
都没有popen
。
不检查popen
的返回值。
不能保证不会溢出sa
数组。
关于c - 指针,内存不足,段错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22051821/