0
當我設置循環迭代10次它的工作原理,但無論我設置了多少次迭代總是會在12次出現此錯誤。這裏是下面的代碼。循環 - 訪問衝突寫入位置0xabababab
有誰知道爲什麼會發生這種情況?或者如果我錯過了代碼中的邏輯錯誤。感謝
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;
錯誤發生在哪條線上? – interjay 2013-03-13 13:20:40
你從哪裏得到訪問違規? – 2013-03-13 13:21:02
來吧..'calcTotal [j + 1]'將爲'j == sSize - 1'生成UB,因爲數組的大小爲'sSize',有效索引爲'0'到'sSize-1'。修正你的循環在'j'上,直到'j + 1
stefan
2013-03-13 13:22:40