Я узнал, как использовать оператор delete для динамических массивов, и я столкнулся с какой-то действительно странной проблемой. Я попробовал два подхода, чтобы написать один и тот же код - один работал, но другой работал. Итак, вот код, я попыталсяОбнаружение кучи в динамическом массиве C++?
Способ 1: -
#include <iostream>
using namespace std;
int main()
{
int *p = new int(2);
for(int i =0; i<2;i++)
{
cin>>p[i];
}
for(int i=0; i<2;i++)
{
cout<<p[i];
}
delete[] p;
system("pause");
}
// Сообщение об ошибке - Кучи коррупция обнаружена. Может кто-нибудь объяснить мне причину ошибки?
Способ 2: - Использование TYPEDEF
#include <iostream>
using namespace std;
typedef int arr[2];
int main()
{
int *p = new arr;
for(int i =0; i<2;i++)
{
cin>>p[i];
}
for(int i=0; i<2;i++)
{
cout<<p[i];
}
delete[] p;
system("pause");
}
// Изложенный метод отлично работает без ошибок. Я совершенно смущен !!
Вероятная ошибка: http://stackoverflow.com/questions/13797926/what-does-new-int100-do –