为了账号安全,请及时绑定邮箱和手机立即绑定

对象删除了, 怎么还能赋值那?

int main(void) {   TV *p=new TV[5];   for (int i=0;i<5;i++) -="">type=0;    p[i]->changeVol();  }  delete []p;//删除了  p=NULL;//赋值为空  return 0; } 我有一事不明, p已经删除了, 怎么还能给p赋值那? 另外 什么是栈  什么是堆啊?/

正在回答

1 回答

delete []p;是释放数组变量,p本身存放一个地址。那块内存释是放掉了,但p还指向那里,所以要p=NULL,避免以后误操作(应该是这样的吧?)

栈堆百度

0 回复 有任何疑惑可以回复我~
#1

lcmao 提问者

就是说P是删不掉的, 以后再用P的时候,,肯定会先赋值NULL的吧, 这里是不是就可以不用赋值NULL了?
2015-07-04 回复 有任何疑惑可以回复我~
#2

onemoo 回复 lcmao 提问者

对于已经失效的指针,最好马上赋予NULL,以免后面误用。 “...以后再用P的时候,,肯定会先赋值NULL的吧...” p是无效值了,那么后面要用到p时就用嘛,为什么要先赋NULL?? 先赋予一个NULL,再赋予一个有用的值? 多此一举啊!你直接赋予有用的值就行了。 前面说的防止误用的意思是:防止你再次对p解引用。 你可能会忘了p已经无效了,于是再次访问其中的内容(这肯定要出问题了)。为了防止这样的哦情况发生,故将p赋值为NULL!
2015-07-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103410    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

对象删除了, 怎么还能赋值那?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信