"分段错误"大文件

时间:2014-04-26 00:45:05

标签: c segmentation-fault

我尝试使用此工具将图形从ASCII DIMACS格式转换为二进制格式 - http://code.google.com/p/dimacs-converter/source/browse/asc2bin.c。 不幸的是,它不适用于大文件(> 2GB);输出是"分段故障(核心转储)"。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

此代码在#define MAX_NR_VERTICES 10000中有genbin.h

此外,它不执行错误检查,无论是从文件读入的顶点是否超过此大小,如果文件的顶点编号为10000或更多,它将只写无效内存。

也许你的"大文件"确实包含超过10,000个顶点?

此代码的错误检查通常非常糟糕,您可以在输入文件中执行许多操作,这些操作只会导致此代码在没有任何警告的情况下写入无效内存。

如果您想修改此代码以处理超过10,000个顶点的文件,我建议您在阅读并验证Bitmap后动态分配Nr_vert,并在每次读取时添加错误检查操作。 (并修复错误检查错误尝试的第77行)。