与std :: vector的C ++ std :: bad_alloc错误

时间:2014-11-15 17:43:36

标签: c++ stdvector bad-alloc clion

我知道之前已经问过这个问题,但答案对于提问者的代码似乎过于明确。

如果认为这是一个无用的重复问题,请随意将其删除或将其标记为重复。

据我所知,我的代码对于我想要实现的内容是正确的,即计算文本文件中指定单词的出现次数。我将不胜感激任何帮助,谢谢。

错误

    This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

我的main.cpp的一部分(导致问题)

    //vectors to hold words from two files
vector<string> wordlist;
vector<string> file;
vector<int> searchVec;

//while a is not an empty string
while (a != "") {

    //getNextWord() returns each word in order from a text file
    //a is a play script, b is a list of words to search for
    a = infile.getNextWord();
    b = infile2.getNextWord();

    file.push_back(a);

    //counts total words in play script
    count++;

    //increments and adds each word from the list of words to search for to the vector
    for (int i = 0; b != ""; i++) {

        wordlist.push_back(b);

    }

    //cycles through words to search for
    for (int j = 0; j < wordlist.size(); j++) {

        //cycle through te play script
        for (int k = 0; k < file.size(); k++) {

            //if the current play script word is the same as the test word, up the count
            if (file[k] == wordlist[j]) {

                searchCount++;

            }

        }

        //print appropriate output, re-initialise the count to 0 for the next word
        cout << "The word " << wordlist[j] << " occurs " << searchCount << " times." << endl;

        searchCount = 0;

    }

}

1 个答案:

答案 0 :(得分:2)

您认为此循环如何终止?:

for (int i = 0; b != ""; i++) {

    wordlist.push_back(b);

}