检测到堆损坏(动态数组)

HEAP CORRUPTION DETECTED (dynamic array)

我正在编写一个程序,在堆上动态分配一个数组,用 55-99 之间的随机数填充它,并将它们打印成 10 行。我正在使用另外 9 个动态数组来存储这些行中的每一行。但是当 运行 程序出现错误时:正常块后检测到 HEAP CORRUPTION。很抱歉代码太笨重了。

#include <iostream>
#include <algorithm>
#include <ctime>

using namespace std;

int numScores = 199;

int* randomTestScores = new int[numScores];

void fillArray() {
    
    for (int i = 0; i < 199; i++) {

        const int min_Value = 55;
        const int max_Value = 99;

        randomTestScores[i] = (rand() % (max_Value - min_Value + 1)) + min_Value;

    }

}

void sortArray() { std::sort(randomTestScores, randomTestScores + numScores); }

// Created better varibale names than a, b, c, etc.

int s5559 = 0, l5559 = 0;
int s6064 = 0, l6064 = 0;
int s6569 = 0, l6569 = 0;
int s7074 = 0, l7074 = 0;
int s7579 = 0, l7579 = 0;
int s8084 = 0, l8084 = 0;
int s8589 = 0, l8589 = 0;
int s9094 = 0, l9094 = 0;
int s9599 = 0, l9599 = 0;


int main() {

    srand(time(0));

    fillArray();
    sortArray();

    // Delete this later
    
    for (int i = 0; i < numScores; i++) {

        cout << randomTestScores[i] << endl;

    }

    //

    for (int i = 0; i < numScores;  i++) {

        if (randomTestScores[i] >= 55 && randomTestScores[i] <= 59) { s5559++; }
        if (randomTestScores[i] >= 60 && randomTestScores[i] <= 64) { s6064++; }
        if (randomTestScores[i] >= 65 && randomTestScores[i] <= 69) { s6569++; }
        if (randomTestScores[i] >= 70 && randomTestScores[i] <= 74) { s7074++; }
        if (randomTestScores[i] >= 75 && randomTestScores[i] <= 79) { s7579++; }
        if (randomTestScores[i] >= 80 && randomTestScores[i] <= 84) { s8084++; }
        if (randomTestScores[i] >= 85 && randomTestScores[i] <= 89) { s8589++; }
        if (randomTestScores[i] >= 90 && randomTestScores[i] <= 94) { s9094++; }
        if (randomTestScores[i] >= 95 && randomTestScores[i] <= 99) { s9599++; }

    }

    int* testScores5559 = new int[s5559];
    int* testScores6064 = new int[s6064];
    int* testScores6569 = new int[s6569];
    int* testScores7074 = new int[s7074];
    int* testScores7579 = new int[s7579];
    int* testScores8084 = new int[s8084];
    int* testScores8589 = new int[s8589];
    int* testScores9094 = new int[s9094];
    int* testScores9599 = new int[s9599];

    for (int i = 0; i < numScores; i++) {

        if (randomTestScores[i] >= 55 && randomTestScores[i] <= 59) {*(testScores5559 + l5559) = randomTestScores[i]; l5559++;} 
        if (randomTestScores[i] >= 60 && randomTestScores[i] <= 64) {*(testScores6064 + l6064) = randomTestScores[i]; l6064++;}
        if (randomTestScores[i] >= 65 && randomTestScores[i] <= 69) {*(testScores6569 + l6569) = randomTestScores[i]; l6569++;}
        if (randomTestScores[i] >= 70 && randomTestScores[i] <= 74) {*(testScores7074 + l7074) = randomTestScores[i]; l7074++;}
        if (randomTestScores[i] >= 75 && randomTestScores[i] <= 79) {*(testScores7579 + l7579) = randomTestScores[i]; l7579++;}
        if (randomTestScores[i] >= 80 && randomTestScores[i] <= 84) {*(testScores7579 + l8084) = randomTestScores[i]; l8084++;}
        if (randomTestScores[i] >= 85 && randomTestScores[i] <= 89) {*(testScores7579 + l8589) = randomTestScores[i]; l8589++;}
        if (randomTestScores[i] >= 90 && randomTestScores[i] <= 94) {*(testScores7579 + l9094) = randomTestScores[i]; l9094++;}
        if (randomTestScores[i] >= 95 && randomTestScores[i] <= 99) {*(testScores7579 + l9599) = randomTestScores[i]; l9599++;}

    }

    delete []randomTestScores;
    delete []testScores5559;
    delete []testScores6064;
    delete []testScores6569;
    delete []testScores7074;
    delete []testScores7579;
    delete []testScores8084;
    delete []testScores8589;
    delete []testScores9094;
    delete []testScores9599;

    return 0;

/*
    if (randomTestScores[i] >= 55 && randomTestScores[i] <= 59) {

        *(testScores5559 + l5559) = randomTestScores[i];
        cout << *(testScores5559 + l5559) << endl;
        l5559++;

    }
*/

}```

您在这些陈述中有错字

if (randomTestScores[i] >= 80 && randomTestScores[i] <= 84) {*(testScores7579 + l8084) = randomTestScores[i]; l8084++;}
if (randomTestScores[i] >= 85 && randomTestScores[i] <= 89) {*(testScores7579 + l8589) = randomTestScores[i]; l8589++;}
if (randomTestScores[i] >= 90 && randomTestScores[i] <= 94) {*(testScores7579 + l9094) = randomTestScores[i]; l9094++;}
if (randomTestScores[i] >= 95 && randomTestScores[i] <= 99) {*(testScores7579 + l9599) = randomTestScores[i]; l9599++;}

不同索引使用了相同的数组