问题描述
一旦程序到达第一个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 (将#修改为@)