对象的动态建立与删除
答案:4 悬赏:0
解决时间 2021-02-22 17:07
- 提问者网友:霸道ぁ小哥
- 2021-02-21 17:51
我想联系一下对象的动态建立与删除的操作,但是遇到了一个问题,首先大家看我的程序:
#include
#include
using namespace std;
class Show
{
public:
Show(string na,int n,int s):name(na),num(n),score(s){cout << "hello" << endl;}
void show();
private:
string name;
int num;
int score;
};
void Show::show()
{
cout < cout < cout <}
int main()
{
Show *p1=new Show("liupeng",1001,95);
Show *p2=p1;
p1->show();
cout << endl;
p2->show();
delete p1;
delete p2;
return 0;
}
问题如上,请问这是怎么回事呢?
最佳答案
- 二级知识专家网友:厭世為王
- 2021-02-21 19:15
delete 操作释放的是指针所指向的内存空间
你的p2指针和p1指针指向的是同一块内存区域啊,所以当你先delete p1后再delete p2时,他会提示内存不可读取!
全部回答
- 1楼网友:duile
- 2021-02-21 21:03
囧
没弄过
- 2楼网友:深街酒徒
- 2021-02-21 20:33
delete 只删除了对象所占的内存,但是这个指针还是存在的,只是他不指向任何地方.
- 3楼网友:浪者不回头
- 2021-02-21 19:51
你将
delete p2;
改为
p2->show();
就知道是怎么回事了,p2 已经变只读了,不能再删了!
我要举报
大家都在看
推荐资讯