1

プログラムを実行すると、Segmentation Fault エラーが発生します。クラス定義で非公開に宣言されている配列「string *words」の使用方法から来ていると思います。ここで .cpp ファイルで使用します。何を変更する必要があるか知っている人はいますか? 問題があると思われる関数は次のとおりです。

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();
  }
4

2 に答える 2

9

この線:

words = new string(words[numwords]);

実際には次のようにする必要があります。

words = new string[numwords];
于 2011-04-19T00:18:39.817 に答える
4

デバッガの使い方を学ぶ必要があります。正確な手順は、使用しているシステムによって異なります。しかし、デバッガーでコードを実行すると、問題が検出された正確な行でデバッガーが停止します。ご想像のとおり、これはデバッグに非常に役立ちます。

問題が検出された行と問題発生した行は、まったく異なる可能性があることに注意してください。

于 2011-04-19T00:19:08.057 に答える