析构函数中delete指针出错释放指针时出错。

2013年3月 C/C++大版内专家分月排行榜第三
2015年1月 C/C++大版内专家分月排行榜第二2012年3月 C/C++大版内专家分月排行榜第二2011年11月 C/C++大版内专家分月排行榜第二2010年6月 C/C++大版内专家分月排行榜第二2010年5月 C/C++大版内专家分月排行榜第二
2011年4月 C/C++大版内专家分月排行榜第三2011年2月 C/C++大版内专家分月排行榜第三2010年8月 C/C++大版内专家分月排行榜第三
2010年5月 C/C++大版内专家分月排行榜第三2010年3月 C/C++大版内专家分月排行榜第三2010年1月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。问,有了析构函数,为什么还要delete,谢谢【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:292,956贴子:
问,有了析构函数,为什么还要delete,谢谢收藏
经典作品新视角的3D奇幻悬疑风冒险页游给你带来超一流的摸金体验!
西沟函数让即将失效的对象作最后的清理工作,delete让new出来的东西失效
析构是个流程性概念,delete是个操作概念。就是说你可以在任意流程里执行delete操作,而析构只能在流程逻辑中体现。举个例子,你吃饭的时候可以吃苹果,但不吃饭的时候你依然可以吃苹果,吃饭就是一个流程,吃苹果就是一个操作。
一般逻辑,new的对象是独立的,所以要delete,但有些是依附于特定对象b的,所以当这个对象b被析构,会将依附对象同样析构掉(一些语言编译器会建立这样的关系,或做了析构流程处理)。
我认为 C++ 的教科书中就不该出现 new 或者 delete。
new/delete 这么复杂的东西根本就不该出现在教科书里 +1
指针才叫复杂
Malloc是买地,构造函数是造屋,New是买地+造屋。free是卖地,析构是拆屋,delete是卖地+拆屋
你就是要把delete语句放到析构函数里析构函数才起作用啊
感觉指针不难啊,5
7楼怎么那么排斥指针呀表示有了指针 都不想使用变量了
还在找人做网站吗?自己试着做一个吧!
所以有一种东西叫"资源申请即初始化"RAII所以才有smart_ptr
堆申请的类不会自动析构
只有delete
之后才会调用析构
delete是引发析构函数的
析构函数是在类对象构造之后调用的反构造的过程,在栈上的对象会自动调用,而在堆上的对象要手动调用。
登录百度帐号推荐应用问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
class dumb_array
// destructor
~dumb_array()
delete [] mA
std::size_t mS
这是我在stackoverflow上看到的某个人回答时写的一段c++代码中的部分,我不懂为什么声明了一个指针的数据成员,在这个类里面就是int* mArray,为什么在用析构函数的时候,要用delete操作符去释放内存空间?这个指针指向的地址不一定是由堆分配而来的内存啊!看到好多代码,他们都用delete来释放这种数据成员所占据的内存。这是为什么呢?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可能是因为他们不会或者不能使用智能指针吧…
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你需要看这个类的构造函数是怎么写的,要把构造函数和析构函数一起看才行。
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:为什么C++中,析构函数、operator delete、以及operator delete []按照惯例不会抛出异常? - 知乎85被浏览5923分享邀请回答134 条评论分享收藏感谢收起7添加评论分享收藏感谢收起查看更多回答

我要回帖

更多关于 delete 析构函数 的文章

 

随机推荐