指针,内存不足,分段错误?

时间:2014-02-26 19:52:28

标签: c pointers

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编译器会自动分配并释放指针内存。我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:2)

您在inn数组中没有空余的空终结符。

每个pclose都没有popen

您不会检查popen的返回值。

无法保证您不会溢出sa数组。