调试错误。 R6010 中止已被调用()

Posted

技术标签:

【中文标题】调试错误。 R6010 中止已被调用()【英文标题】:Debug error. R6010 abort has been called() 【发布时间】:2015-03-02 22:02:51 【问题描述】:

#include "../../../std_lib_facilities.h"

int main()

vector <int> nmb; vector <int> rep; vector <int> prt; int flag = 0; int temp = 0; int br = 0; int max = -1; int ind = 0; cout << "Enter as much integers as you like\n"; while (cin >> temp) if (nmb.size() == 0) nmb.push_back(temp); prt.push_back(temp); ++rep[br]; ++br; else for (int i = 0; i < nmb.size(); ++i) if (temp == nmb[i]) ++rep[i]; flag = 1; if (flag == 0) nmb.push_back(temp); prt.push_back(temp); ++rep[br]; ++br; else if (flag == 1) flag = 0; prt.push_back(temp); cout << "You've entered numbers\n"; for (int j = 0; j < prt.size(); ++j) cout << prt[j] << " "; for (int k = 0; k < rep.size(); ++k) if (rep[k] > max) max = rep[k]; ind = k; cout << "\n\nMost repeated number is " << nmb[ind] << endl;

我的任务是写出最多输入的数字。我知道这可能不是最好的主意,但它是我拥有的第一个“好”的,所以我接受了。它编译得很好,但在运行时给了我那个标题的错误。我在几个地方尝试了 cout

【问题讨论】:

当您执行此操作时,rep 为空:++rep[br]; 不是默认设置为0吗?我以为我只是将 rep[0] = 0 设置为 rep[0] = 1? 如果rep 为空,rep[0] 不是一个东西。 【参考方案1】:

您尝试访问rep 的第一个元素,它是一个空向量。

您必须先实际添加元素,然后才能访问它们。现在你正在读取和写入不属于你的内存。

【讨论】:

以上是关于调试错误。 R6010 中止已被调用()的主要内容,如果未能解决你的问题,请参考以下文章

std::thread 导致应用程序中止并出现错误 R6010

在 wifstream 析构函数中中止

调试错误 -Abort() 已被调用

iOS Swift 3核心数据-尝试递归调用-save的致命错误:上下文中止

ARM Data Abort 错误异常调试

检测到错误后,Can Address Sanitizer会立即中止吗?