我尝试使用此工具将图形从ASCII DIMACS格式转换为二进制格式 - http://code.google.com/p/dimacs-converter/source/browse/asc2bin.c。 不幸的是,它不适用于大文件(> 2GB);输出是"分段故障(核心转储)"。我该如何解决这个问题?
答案 0 :(得分:2)
此代码在#define MAX_NR_VERTICES 10000
中有genbin.h
。
此外,它不执行错误检查,无论是从文件读入的顶点是否超过此大小,如果文件的顶点编号为10000
或更多,它将只写无效内存。
也许你的"大文件"确实包含超过10,000个顶点?
此代码的错误检查通常非常糟糕,您可以在输入文件中执行许多操作,这些操作只会导致此代码在没有任何警告的情况下写入无效内存。
如果您想修改此代码以处理超过10,000个顶点的文件,我建议您在阅读并验证Bitmap
后动态分配Nr_vert
,并在每次读取时添加错误检查操作。 (并修复错误检查错误尝试的第77行)。