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/

10-13 05:05