循环访问违反写入位置0xabababab

Loop - Access violation writing location 0xabababab

本文关键字:位置 0xabababab 访问 循环      更新时间:2023-10-16

当我将循环设置为迭代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。这就超出了数组边界