この構造体にメモリ ( Word * wordList
)を割り当てました。
struct Word{
int occurrences;
std::string wrd;
};
書くことによって:
Word * tempList = new Word[numWords + 1];
for(int i = 0; i < numWords; i++){
tempList[i] = wordList[i];
}
delete[] wordList;
wordList = tempList;
tempList = 0;
Word currWord = {1, wrd};
wordList[numWords] = currWord;
numWords++;
numWords
このビットのコードが呼び出される前後の wordList のサイズでありwrd
、メソッドに渡される文字列です。このコードは、単語が にまだ存在しない場合に単語を追加するために実行されwordList
ます。
私の問題は、delete[]
が呼び出されると、プログラムが動作しなくなることです。何が起こるかを確認するために使用delete
してみましたが、私が知る限り、プログラムは正常に機能しました。何が起こっていて、なぜdelete[]
プログラムがフリーズするのですか?
wordList
のメンバーですclass WordsOfLength
:
class WordsOfLength{
private:
int numWords;
Word * wordList;
public:
WordsOfLength();
WordsOfLength(int nNumWords, Word* nWordList);
~WordsOfLength();
void addWord(std::string wrd);
std::string getWord(int frequency);
friend void WordData::writeWordData(const char* fileName);
friend void WordData::setWordData(const char* fileName);
};
コンストラクターを使用:
WordsOfLength::WordsOfLength(){
numWords = 0;
wordList = NULL;
}
およびデストラクタ:
WordsOfLength::~WordsOfLength(){
delete[] wordList;
wordList = 0;
}