如何解决从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 举报,一经查实,本站将立刻删除。