为什么会导致分段错误?

时间:2013-10-21 11:57:52

标签: c++

为什么会导致分段错误?

int compareFiles(const char* outFile, const char* expectedFile) {
    int N = 10000;
    FILE* f1;
    FILE* f2;
    char buf1[N];
    char buf2[N];

    f1 = fopen(expectedFile, "r");
    f2 = fopen(outFile, "r");

    do {
        size_t r1 = fread(buf1, 1, N, f1);
        size_t r2 = fread(buf2, 1, N, f2);

        if (r1 != r2 ||
            memcmp(buf1, buf2, r1)) {
          return 0;
        }
    } while (!feof(f1) || !feof(f2));

    return feof(f1) && feof(f2);
}

2 个答案:

答案 0 :(得分:0)

检查fopen的返回值 - 如果返回NULL,则后续文件操作会出现seg错误。

答案 1 :(得分:-2)

您的代码完全正确,并且正在我的机器中运行。在这种情况下,只有在没有要读取的输入文件时才会出现分段。