delete 是为什么报错

shouldface 2012-09-02 07:39:23
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;
}
...全文
145 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙泉剑 2012-09-02
  • 打赏
  • 举报
回复
p声明的是int *,楼主用delete p试试
dushun1000 2012-09-02
  • 打赏
  • 举报
回复
在push函数中,你先new了data,这带来的问题是,你在构造时new过一遍,再第二次new.
push函数里的new data前面delete掉data

shouldface 2012-09-02
  • 打赏
  • 举报
回复
搞出来了,一个小错误导致的错误,谢谢大家了
hello383270701 2012-09-02
  • 打赏
  • 举报
回复
应该是删除p的 可能是你代码别的地方导致的
xspace_time 2012-09-02
  • 打赏
  • 举报
回复
delete p;为什么要写成[]p呢
shouldface 2012-09-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

data是new出来的,p没有new出来,
所以只能delete []data,不能[]p
[/Quote]
关键是data 不能delete啊
int *p = new int;
p =data;
如果这样也不行啊
dushun1000 2012-09-02
  • 打赏
  • 举报
回复
data是new出来的,p没有new出来,
所以只能delete []data,不能[]p

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧