Почему это не достаточно, чтобы использовать Delete [], чтобы удалить 2Д динамически выделенный массив?
Я использовал следующий код для создания 2D динамически выделенного массива:
int x,y; cout<<"Entre matrix dimensions"<<endl; cin>>x>>y; //Dynamically Allocating x*y array int **myArray = new int*[x]; //reserve x row elements for (int i = 0; i < x; ++i) { for (int j = 0; j < y; ++j) { myArray[i] = new int[j]; //makes each one of the reserved row elements points to an array } } //entreing the values cout<<"Entre the values"<<endl; for (int i = 0; i < x; ++i) { for (int j = 0; j < y; ++j) { cin>>myArray[i][j] ; } } //Displaying the values cout<<"You entred : "<<endl; for (int i = 0; i < x; ++i) { for (int j = 0; j < y; ++j) { cout<<myArray[i][j]<<" " ; } cout<<endl; }
Когда я тестировал предыдущий код, он работал хорошо.Но когда я попробовал следующий код, чтобы освободить 2d-массив:
//Memory Deallocation for (int i = 0; i < x; ++i) { delete [] myArray[i]; } delete[] myArray;
Произошла ошибка:
Heap corruption detected. CRT detected that the application wrote to memory after end of heap buffer
Что я уже пробовал:
Я пытался просто использовать
delete[] myArray;для освобождения памяти и сообщения об ошибке не появилось. Но я не знаю, правильно это или нет?