在c++中 如: int *p = new int; int *temp = p; delete temp; 那么删除的是temp的内存还是p的内存..

 我来答
明快还顽强的纯真
推荐于2016-07-21 · TA获得超过1447个赞
知道大有可为答主
回答量:2329
采纳率:66%
帮助的人:696万
展开全部

指针p 占一个内存, 姑且叫 pX

指针temp,占一个内存, 姑且叫 tempX

p= new int. 表示, 把 px这个内存内容设置为 一个指针,内容是 (new int) 这个内容的指针, 它站内存位置比如是 intX.

那么, p 内存里它的值 就是intX 的地址,不是 intX的内容...

delete temp, 会把 指针tempX这个内容指向的地址, intX的这块内容擦出.


p 和temp 都指向  intX.

但是 intX 的内容已经被系统回收了...它, 不知道是什么了.


-.- 有些繁琐...

画图可能比较好理解.


  代码                               内存状态(k为int 的内存地址)
 int *p = new int;               p(k)                       (int)    
 int *temp = p;                  p(k)      temp(k)          (int)    
 delete temp;                    p(k)      temp(k)          -----
更多追问追答
追问
也就是只是存储内容内存的被删除,temp和p指针还在,可以继续进行如下行为:
比如:temp = new int 或p = new int;
还有什么办法能够验证这个机理.
追答
C被人诟病的就是指针的维护。
一般执行delete后立马吧指针指向Null。
但是,,,,有时候也不能指针满天还能清楚知道哪些正常。

所以有很多safeptr的类。其会管理对象的所有指针,修改其引用机制,确保目标销毁时,所有指针都能知道。
帐号已注销
2014-10-31 · TA获得超过110个赞
知道答主
回答量:182
采纳率:0%
帮助的人:73.6万
展开全部
temp和p是指针,删掉的是它们所指向对象的空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一颗程序猿o_0
2014-10-31 · TA获得超过6298个赞
知道大有可为答主
回答量:5403
采纳率:77%
帮助的人:1377万
展开全部
都不是,删除的是 你new出来的那块内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式