Я пытаюсь написать программу, которая принимает входные данные в виде динамического массива и сортирует их по убыванию, а затем отображает по убыванию.Тем не менее, я получаю сообщение об ошибке отладки, в котором говорится: «HEAP CORRUPTION DETECTED: после блока Normal (# 182) в 0x010CE3E8. CRT обнаружил, что приложение записало в память после завершения буфера кучи».
Итак, программа создаети работает успешно.Однако, когда я пытаюсь выйти из программы, это занимает очень много времени, и я получаю сообщение об ошибке.
void insert_Array(int Array1[], int array_size)
{
for (int counter = 0; counter < array_size; ++counter)
{
cout << " Please enter the " << counter << " number : ";
cin >> Array1[counter];
}
return;
}
void swap(int* a, int* b)
{
int holder = *a;
*a = *b;
*b = holder;
}
void sort_Array(int Array1[], int array_size)
{
int lowestNum_index;
for (int counter1 = 0; counter1 < array_size; ++counter1)
{
for (int counter2 = counter1; counter2 < array_size; ++counter2)
{
if (Array1[counter2] < Array1[counter2 + 1])
lowestNum_index = counter2;
else
lowestNum_index = counter2 + 1;
}
swap(Array1[counter1], Array1[lowestNum_index]);
}
return;
}
Основная функция
int* npointer = new int[nNumbers];
insert_Array(npointer, nNumbers);
sort_Array(npointer, nNumbers);
cout << " The number you desired is " << nNumbers << endl;
cout << " The numbers in the array from high to low are ";
for (int i = 0; i < nNumbers; ++i)
{
cout << *(npointer + nNumbers - i) << " ";
}
cout << endl;
delete [] npointer;
Когда я запускаю программу, успешно сортирует числачто я даю от самого высокого до самого низкого.
ОБНАРУЖЕНА КОРРУПЦИЯ КАРТЫ: после блока Normal (# 182) в 0x010CE3E8.CRT обнаружил, что приложение записало в память после завершения буфера кучи.