关于c++中new和delete的一些疑惑

风凌雪 2011-10-18 10:33:22
各位神,小弟在使用new和delete的过程中遇到了一些问题,想请教一下:

1、new一个指针对象之后将它赋值给另外一个指针的时候该怎么delete?

如:CButton *pNewButton = NULL; pNewButton = new CButton(); m_Button = pNewButton; 其中pNewButton是局部变量,m_Button是成员变量。发现如果在赋值之后delete pNewButton会出错的。
...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-10-18
  • 打赏
  • 举报
回复

new,delete配套使用。。。
风凌雪 2011-10-18
  • 打赏
  • 举报
回复
学习了
jaylong35 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liaolijin 的回复:]

那么是不是要在不再使用成员函数m_Button的时候delete?如果delete 了pNewButton还使用m_Button就会出错?
[/Quote]

不论赋值给几个指针变量,这个指针所指向的区域是唯一的,所以,你在删除这一区域(也就是DELETE)的时候一定要确保所有同仁的指针变量都不会再被使用访问这一块区域,否则一定会报错。

而且,不论赋值给多少指针变量,只能删除一次。

所以你可以做一个指针计数,当指针被赋值给一个新变量的时候计数加1,当一个变量不再使用的时候计数减1
只有当计数为0的时候再delete
风凌雪 2011-10-18
  • 打赏
  • 举报
回复
那么是不是要在不再使用成员函数m_Button的时候delete?如果delete 了pNewButton还使用m_Button就会出错?
qq120848369 2011-10-18
  • 打赏
  • 举报
回复
delete 的是地址指向的内存,不是把指针删除了,楼主先学好C语言基础。
yujie_v 2011-10-18
  • 打赏
  • 举报
回复
有指针,就可以delete的。
luciferisnotsatan 2011-10-18
  • 打赏
  • 举报
回复
new一次,delete一次。至于什么时候delete,看代码里怎么用了

64,647

社区成员

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

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