运行时错误,无法确定原因
Runtime error, unable to determine the cause
我正在为我的算法类实现抽象数据类型Map,我们被要求使用2个数组来实现它。
我昨晚已经完成了实现,一切都很好(当我们在线发送作业时,它会使用自动测试进行测试),并且它通过了每一次测试。然后我需要使用二进制搜索来实现它,我做到了。
今天早上,当我运行代码时,它给了我一个运行时错误,我认为我的复制构造函数是原因,因为当我对它进行注释时,代码运行良好,但我的复制构造器与我的导师实现的完全一样。
这是它崩溃的代码:
ArrayMap<string,string> m;
string s1("Sarajevo"), s2("Zagreb");
m[s1] = "BiH";
m[s2] = "Hrvatska";
{
ArrayMap<string,string> m2(m);
ArrayMap<string,string> m3;
m3=m;
m.empty(s1);
cout << m2.numOfElements() << " ";
cout << m2[s1] << " ";
cout << m3.numOfElements() << " ";
cout << m3[s1] << " ";
}
cout << m.numOfElements();
cout << " '" << m[s1] << "' ";
m.obrisi();
cout << m.numOfElements();
cout << " '" << m[s2] << "'";
这里是构造函数:
ArrayMap(const NizMapa<TypeOfKey, TypeOfValue>& rhs){
_capacity = rhs._capacity;
_numOfElements = rhs._numOfElements;
_arrayK = new TypeOfKey[_capacity];
_arrayV = new TypeOfValue[_capacity];
for(int i = 0; i<_numOfElements; i++){
_arrayK[i] = rhs._arrayK[i];
_arrayV[i] = rhs._arrayV[i];
}
}
编辑:
SSCE
ArrayMap<string,string> m;
string s1("Sarajevo"), s2("Zagreb");
m[s1] = "BiH";
m[s2] = "Hrvatska";
ArrayMap<string,string> m2(m);
cout << m2[s1] << " " << m2.numOfElements();
/* When I do just this it works fine, but when combined with others it crashes the program*/
编辑:http://pastebin.com/vXdBTs4n这是类实现:NizMapa是ArrayMap_kapacitet是_能力_brojE为_numOfElementsTipKljuca是TypeOfKeyTipVrijednosti是值类型方法:obrisi为空/删除(2个版本)
注意:这不是二进制搜索版本,而是顺序搜索版本。如果需要任何其他信息,请询问,这很重要。提前感谢!
此处使用_capacity
进行分配
_capacity = rhs._capacity;
_numOfElements = rhs._numOfElements;
_arrayK = new TypeOfKey[_capacity];
_arrayV = new TypeOfValue[_capacity];
在这里您使用_numOfElements
for(int i = 0; i<_numOfElements; i++){
作为循环边界。因此,如果_numOfElements
>_capacity
,这两个可能不匹配,并且您的写入超出了数组边界。
相关文章:
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 对单向链表进行排序时出现运行时错误
- 为什么此代码存在运行时错误?
- 你能解释一下什么运行时错误是如何解决它的吗?
- 在Hackerearth上获取运行时错误(SIGSEGV),无法找出代码中的问题
- 运行时错误:有符号整数溢出:964632435 * 10 无法在类型 'int' 中表示
- 排列程序无法写入数组 - 运行时错误
- 无法从网页类继承而不出现运行时错误
- QT程序无法编译/具有运行时错误(IDE:CodeBlocks/QTCreator)
- 运行时错误,无法确定原因
- 如果没有运行时错误,我无法从MYSQL_ROW转换为System::String类型
- 无法弄清楚为什么我的程序在 spoj 上给出运行时错误而不是在 ideone 上给出运行时错误的原因
- 代码中存在无法预测的SIGSEGV(运行时错误)
- C++析构函数运行时错误:无法munmap
- 运行时错误:无法启动服务器
- 在代码厨师上获取运行时错误 (SIGSEGV),无法找出代码中的问题
- UVA 在线法官返回我无法重现的运行时错误