当我的程序出现分段错误时,我一直在尝试进行一些调试。我已经追踪到调用倒带的位置。
创建 ISBNPrefix 对象时打开文件
ISBNPrefix::ISBNPrefix(const char* filename)
{
file = fopen( filename, "r" );
}
文件是 ISBNPrefix 类的成员:
class ISBNPrefix {
FILE* file;
public:
ISBNPrefix(const char* filename);
bool isRegistered(int area) const;
int minNoDigits(int area) const;
bool isRegistered(int area, const char* publisher) const;
~ISBNPrefix();
};
创建 ISBNPrefix 对象的行是:
ISBNPrefix prefixList("prefixRanges.txt");
prefixRanges.txt 是我目录中的文件名
现在我在这个部分发生了分段错误:
//-------------------------------
cout << "MADE IT 1" << endl;
//-------------------------------
rewind( file );
//-------------------------------
cout << "MADE IT 2" << endl;
//-------------------------------
哪个输出:
MADE IT 1
Segmentation fault
解构器:
ISBNPrefix::~ISBNPrefix()
{
if( file != NULL )
{
fclose(file);
}
}
是文件被关闭的唯一地方
编辑:经过一些故障排除后,没有找到解决方案,建议我发布所有内容。由于我的声誉很低,而且我不能发布超过 2 个链接,因此 pastebin 链接位于评论部分。