从delete []堆损坏?

问题描述

一旦程序到达第一个delete [],我就会不断出现堆损坏。我的程序需要10,000个整数,并将它们放入数组中,我必须为每种排序找到时间。为此,我需要一遍又一遍地复制无序数组,以便它不会被有序数组覆盖,但是一旦到达第一个delete [],我就会不断出现堆损坏。更新:我的大小以及检查的输入都是正确的,但是一旦我添加了新的动态数组以从arrq []复制,就开始出现问题。

int main()
{
    clock_t timereq;
    double time_taken;
    ifstream in("input3.txt");
    int size;
    in >> size;
    int num;
    int* arrq = new int[size];
    int i = 0;
    while (!in.eof()) {
        in >> num;
        arrq[i] = num;
        i++;
    }

    int* arrb = new int[size];

    for (i = 0;i < size; i++){
        arrb[i] = arrq[i];
    }
    timereq = clock();
    quickSort(arrq,size-1 );
    timereq = clock() - timereq;
    time_taken = double(timereq) / CLOCKS_PER_SEC; /// double(CLOCKS_PER_SEC);
    cout << time_taken << endl;

    delete [] arrq;

    timereq = clock();
    bubblesort(arrb,size);
    timereq = clock() - timereq;
    time_taken = double(timereq)/CLOCKS_PER_SEC; /// double(CLOCKS_PER_SEC);
    cout << time_taken << endl;

    int* arrs = new int[size];
    for (i = 0;i < size; i++) {
        arrs[i] = arrb[i];
    }

    delete[] arrb;
    
    timereq = clock();
    selectionsort(arrs,size);
    timereq = clock() - timereq;
    time_taken = double(timereq) / CLOCKS_PER_SEC; /// double(CLOCKS_PER_SEC);
    cout << time_taken << endl;

    int* arri = new int[size];

    for (i = 0;i < size; i++) {
        arri[i] = arrs[i];
    }

    delete[] arrs;
    
    timereq = clock();
    insertionsort(arri,size);
    timereq = clock() - timereq;
    time_taken = double(timereq) / CLOCKS_PER_SEC; /// double(CLOCKS_PER_SEC);
    cout << time_taken << endl;

    int* arrm = new int[size];

    for (i = 0;i < size; i++) {
        arrm[i] = arri[i];
    }

    delete[] arri;
    
    timereq = clock();
    mergeSort(arrm,size-1);
    timereq = clock() - timereq;
    time_taken = double(timereq) / CLOCKS_PER_SEC; /// double(CLOCKS_PER_SEC);
    cout << time_taken << endl;
    
    delete[] arrm;

    return 0;

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)