两次连续new,是不是两次分配不同的内存?

allen1981813 2003-01-16 01:07:08
?????????????
...全文
115 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wendymouse 2003-01-16
  • 打赏
  • 举报
回复
是否只有全局变量的指针在delete以后才需要付值为NULL?
rushman 2003-01-16
  • 打赏
  • 举报
回复
不是。
我的意思是,当指针变量是临时变量时,而且内存释放后,此临时的指针变量明显已不再被使用的时候,可以不用置为NULL。

不过如果你搞不清楚,用完后就置为NULL,总不会错 ^_^
rushman 2003-01-16
  • 打赏
  • 举报
回复
一般来说,是这样。
例外就是函数中的临时指针变量。一般会在函数返回前释放内存,而且临时变量返回后也就没有意义了,可以不用将之置为NULL。
allen1981813 2003-01-16
  • 打赏
  • 举报
回复
那么就是人们常建议的delete后用pointer=null or 0?
rushman 2003-01-16
  • 打赏
  • 举报
回复
空指针一般是表示此指针无效。
在内存尚未分配前用NULL,在内存被释放掉后用NULL(尤其是全局的指针变量),也就是一种标志。用好它,可以避免许多错误。起码NULL所指的是一个确切的地址(虽然无法访问),而释放后的指针如果还指向原来的地址,没有任何机制可以防止此内存被再次存取(也就是说,虽然delete了,可是该地址依然可以访问),这样就会产生一些无法预料的错误。
allen1981813 2003-01-16
  • 打赏
  • 举报
回复
长知识了
那何种情况会有null pointer assigment
rushman 2003-01-16
  • 打赏
  • 举报
回复
所以,有一些内存泄漏的事情,就是因为没有delete
rushman 2003-01-16
  • 打赏
  • 举报
回复
allen1981813 2003-01-16
  • 打赏
  • 举报
回复
也就是一次new,就一定要一次delete才能在分配?
rushman 2003-01-16
  • 打赏
  • 举报
回复
new之后,如果不释放(delete),是不会被再次分配出去的(多线程的时候需要指明)。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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