关于动态数组的一个有关问题

关于动态数组的一个问题
下面是自己写的一个程序,为什么加入“delete [] p;”后会出错?求教大神
#include<iostream>
using namespace std;

//秦九韶算法
int main()
{
int n;
float *p,value,x;

cout << "输入多项式的次数: ";
cin >> n;
  p = new float[n];
cout << "输入多项式系数:";
for( int i=0;i<=n;++i)
cin >> p[i];
value=p[0];
cout <<"输入x:";
cin >> x;
for(int i=1;i<=n;++i)
value=value*x+p[i];
cout << "多项式的值:" << value;
  //delete [] p;

return 0;
}


------解决方案--------------------
C/C++ code

#include<iostream>
using namespace std;

//秦九韶算法
int main()
{
int n;
float *p,value,x;

cout << "输入多项式的次数: ";
cin >> n;
  p = new float[n];
cout << "输入多项式系数:";    
for( int i=0;i<n;++i)//把=等号去掉,你数组越界了
cin >> p[i];
value=p[0];
cout <<"输入x:";
cin >> x;
for(int i=1;i<=n;++i)
value=value*x+p[i];
cout << "多项式的值:" << value;
delete [] p;

return 0;
}

------解决方案--------------------
C/C++ code


#include<iostream>
using namespace std;

//秦九韶算法
int main()
{
    int n;
    float *p,value,x;

    cout << "输入多项式的次数: ";
    cin >> n;
    p = new float[n+1];  //多加一位
    cout << "输入多项式系数:"; 
    for( int i=0;i<=n;++i)
        cin >> p[i];
    value=p[0];
    cout <<"输入x:";
    cin >> x;
    for(int i=1;i<=n;++i)
        value=value*x+p[i];
    cout << "多项式的值:" << value;
    delete [] p;

    return 0;
}