2011-04-19 57 views
1

當我運行我的程序時,出現Segmentation Fault錯誤。我相信它來自我如何使用在類定義中私有聲明的數組「字符串」。我在.cpp文件中使用它 任何人都知道我需要更改什麼? 繼承人的功能,我認爲這個問題是:帶字符串數組的分段錯誤C++

Dictionary::Dictionary(string filename){ 

    ifstream inF; 

    inF.open(filename.c_str()); 

    if (inF.fail()){ 
     cerr << "Error opening file" <<endl; 
     exit(1); 
    } 

    inF >> numwords; 
    numwords = 3000; 
    words = new string(words[numwords]); 


    for(int i=0; i <= numwords - 1; i++){ 
     inF >> words[i]; 
    } 
    inF.close(); 
    } 
+0

'words = new string(words [numwords])' - 這行應該在你的代碼中做什麼?右括號內大括號內的單詞[numwords]的目的是什麼?如果你是作者,那麼我相信你應該能夠解釋爲什麼它是這樣寫的。 – AnT 2011-04-19 00:25:19

+0

你在暗示安德烈?這可能只是一個簡單的錯誤。 – dcousens 2011-04-19 01:04:21

回答

9

行:

words = new string(words[numwords]); 

實際上應該是:

words = new string[numwords]; 
4

你將需要學習如何使用調試器。確切的程序取決於你使用的是什麼系統。但是,如果您在調試器中運行代碼,調試器將在檢測到問題的確切行上停止。正如你可以想象的那樣,這對調試非常有幫助。

請注意,問題是檢測到的行和問題開始的行可能完全不同。