當我的程序出現分段錯誤時,我一直在嘗試做一些調試。我已經將它追蹤到倒片被稱爲的位置。倒帶導致分段錯誤
當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鏈接位於評論部分。
無效檢查後添加'<< endl' ...有可能緩衝區沒有被刷新。 – Tushar 2013-03-16 20:09:59
我在'ISBNPrefix'類中看不到複製構造函數或賦值運算符,但我看到了析構函數。這將是我對這個問題的第一個猜測。特別是如果你的析構函數關閉了文件,那麼你有一個問題,這可能解釋你所看到的段錯誤。 – john 2013-03-16 20:11:32
請分享更多的「應用程序」代碼,即實例化您的ISBN的代碼。對象 – 2013-03-16 20:12:52