报错原因:delete动态数组前需将指针拨回第一个元素
#include <iostream>
int main()
{
using namespace std;
double* p3 = new double[3]; // 声明动态数组,指针p3指向数组第一个元素
p3[0] = 0.2;
p3[1] = 0.5;
p3[2] = 0.8;
p3 = p3 + 1; // 指针p3指向数组第2个元素
//p3 = p3 - 1; // 指针p3指向第1个元素。取消本行注释即解决报错。原因是delete动态数组前需将指针拨回第一个元素
delete [] p3; // 释放动态数组内存报错
return 0;
}