delete 是为何报错

delete 是为什么报错classStack{public:Stack(ints2):size(s),top(0){datanewint(size)}voidpush(intva

delete 是为什么报错
class   Stack
{
public:
Stack(int   s   =   2):size(s),top(0)
{

data   =   new   int(size);
}
void   push(int   val);
void   pop();
bool   isEmpty();
bool   isFull();
void   show();
private:
int   size;
int   top;
int   *data;
};
void   Stack::push(int   val)
{
if(!isFull())
{
data[top++]   =   val;
}
else
{
int   *p   =   data;
data   =   new   int[2*   size];
for(int   i   =0   ;   i   <   size;   ++i)
data[i]   =   p[i];
//delete   []p;                         为什么这里用delete会出错
size   =   2*size;
data[top++]   =   val;
}

[解决办法]
data是new出来的,p没有new出来,
所以只能delete []data,不能[]p
[解决办法]
delete p;为什么要写成[]p呢
[解决办法]
应该是删除p的 可能是你代码别的地方导致的