C ++进程终止,状态为-1073741819

时间:2019-06-07 04:34:57

标签: c++ c++11

我正在创建一个小词典。我已经创建了一个字符串矢量来预先打印一些单词,以将其中一个作为用户的输入并向其中描述单词。

我尝试使用Google搜索,并尝试在for循环中设置unsigned int i = 0

这样做的部分代码如下:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
    vector<string> word = {"none", "jump fatigue" , "scrim game", "box up", "turtling", "swing", "flickshot", "tracking", "panic build", "cone jump", "ttv", "one-shot", "tagged", "blue", "white", "lasered", "melted", "default", "bot", "stealth", "aggresive", "sweaty", "tryhard", "choke"};
    for(int i = 0; i <= word.size(); i++){
        cout<<i<<")"<< word[i] << endl;
    }
    return 0;
}

它打印时没有任何错误,并且在运行结束时冻结了一段时间并以结尾的代码, Process terminated with status -1073741819(0 minute(s), 4 second(s)) 而应该以0结尾

在调试我得到的代码时 warning: comparison between signed and unsigned integer expressions [-Wsign-compare]

1 个答案:

答案 0 :(得分:1)

您的问题出在您的for循环i <= word.size()中。这应该是<。最后一个索引比大小小一个,因为第一个索引为0。

我建议至少在for循环中使用size_t以获得更好的类型

for (std::size_t i = 0; i < word.size(); i++) {

尽管更干净的迭代方法是基于范围的for循环

for (auto& w : word) {
    std::cout << w << '\n';
}