循环访问违反写入位置0xabababab
Loop - Access violation writing location 0xabababab
当我将循环设置为迭代10次时,它可以工作,但是无论我设置多少次迭代,它总是在第12次时出现此错误。下面是代码:
有人知道为什么会这样吗?或者我遗漏的代码中是否有逻辑错误。由于
string* Analyser::topFiveBuyers()
{
//set size and add buyer names for comparison.
string *calcString = new string[sSize];
int calcTotal[sSize] = {INT_MIN, INT_MIN, INT_MIN, INT_MIN, INT_MIN};
//checks transactions
for (int i = 0; i<nTransactions; i++)
{
//compares with arrays
for(int j =0; j<sSize; j++)
{
if(calcTotal[j] < calcTotal[j+1])
{
int tVar = calcTotal[j+1];
string tStr = calcString[j+1];
int tVarTwo = calcTotal[j];
string tStrTwo = calcString[j];
calcTotal[j] = tVar;
calcString[j] = tStr;
calcTotal[j+1] = tVarTwo;
calcString[j+1] = tStrTwo;
}
if(tArray[i].buyerName == calcString[j])
{
calcTotal[j] += tArray[i].numShares;
break;
}
else
{
//checks if shares is great then current total then replaces
if(tArray[i].numShares > calcTotal[j])
{
int tVar = calcTotal[j];
calcTotal[j+1] = tVar;
string tStr = calcString[j];
calcString[j+1] = tStr;
calcTotal[j] = tArray[i].numShares;
calcString[j] = tArray[i].buyerName;
break;
}
}
}
}
return calcString;
您正在访问calcString[j+1]
和calcTotal[j+1]
,并且j
在上次循环运行时等于sSize-1
。这就超出了数组边界
相关文章:
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何将元素添加到向量的字符串位置
- 如何选择在 csv 文件中输出的位置
- 无法打开 fstream C++文件,即使它与 .cpp 位于同一位置
- 如何在特定位置追加 json 文件
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 循环访问违反写入位置0xabababab