首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

delete 是为何报错

2012-09-09 
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的 可能是你代码别的地方导致的

热点排行