C++中 析构函数是用来释放内存,那么自定义的析构函数,能释放内存吗? 20

自定义析构函数,其实就是默认析构函数上面,加上自己要执行的代码吧?... 自定义析构函数,其实就是默认析构函数上面,加上自己要执行的代码吧? 展开
 我来答
黄邦勇帅哥哥
推荐于2017-06-15 · TA获得超过3989个赞
知道大有可为答主
回答量:1199
采纳率:100%
帮助的人:647万
展开全部
就算是你自定义了析构函数,默认析构函数同样会存在,而且会执行。当类中有类对象成员时,首先调用的是自定义的析构函数,然后这个类对象成员资源的释放,就是由默认析构函数来释放的。因为指针不属于对象成员,因此默认析构函数不会管他,需手动释放指针的资源(主要是new)例class B{public:~B(){cout<<"B";}}; class A{public: B mb; ~A(){}}; void main(){ A ma;} 在类A中的析构函数什么也没做,也就是没有释放类成员mb的资源,但类B的析构函数仍执行了,这个类对象成员mb的资源释放,就是使用的类A的默认析构函数进行的。
雷龙
2026-04-09 广告
CS创世 SD NAND的SD协议原生兼容性显著简化嵌入式设计:1. 直接对接标准SD控制器,省去额外协议转换芯片,降低硬件复杂度;2. 支持SPI/SD双模式(如我们的xxx系列),开发阶段用SPI调试,量产切换SD模式提升速度;3. 兼... 点击进入详情页
本回答由雷龙提供
风若远去何人留
2013-05-29 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450171
专业C/C++软件开发

向TA提问 私信TA
展开全部
默认的析构函数什么都不做的,如果要释放内存 需要你自己加上
析构函数就是在对象生命周期结束时自动调的最后一个函数,需要实现什么功能都由你自己控制
更多追问追答
追问
默认的析构函数什么都不做?不会吧,书上说,这是用来释放对象的啊,程序结束时,会调用每一个对象的默认析构函数,难道这个函数什么都不做?
追答
如果你不写什么东西,那么它真的什么都不做 :)
这是用来释放对象的,这句话没错,它存在的原因就是释放,但是怎么释放,需要你来告诉它
你可以做这样一个测试,在构造函数中申请一段内存,然后不写析构函数,也就是用默认析构函数
在程序的其他地方把这个内存值保存起来
在定义对象生命周期结束后再调用这段内存,看是否会出问题,不出问题证明它没有被释放
:)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
糖二灰
推荐于2017-06-17 · TA获得超过3940个赞
知道小有建树答主
回答量:1052
采纳率:75%
帮助的人:1218万
展开全部
系统自带的类的析构函数已经都做好了,你自己写的类的析构函数默认是空的,如果在类中开辟了一些堆空间来使用的话,最好检查你使用之后有没有释放掉,如果没有释放就要在析构函数中释放掉,不然容易造成内存浪费。
更多追问追答
追问
程序结束时,会自动调用默认析构函数来释放对象是吧?

如果我们自定义了析构函数,程序结束时也会自动调用自定义析构函数是吧?

那么我们自定义的析构函数具有释放对象的功能么?

如果没有,那还叫析构函数么?
追答
系统默认的析构函数只会释放系统自己创建的一些内存空间。
如果你在类中用了new之类的在块堆开辟了新的空间,那么你必须在使用结束时候delete掉这部分空间,系统自带的析构函数不会帮你释放这一部分空间的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
archmageee4
推荐于2017-06-27 · TA获得超过1517个赞
知道大有可为答主
回答量:1581
采纳率:78%
帮助的人:1116万
展开全部
当然能了,你知道把要释放资源的语句, 放到析构函数里,那么当这个单位结束自己的寿命周期.比如:
{
myClass a;
{
myClass m;
m.init()
...
}
//走到这里 m已被回收,而a没有
}.
或者被delete
{
myClass *a=new myClass()
delete a;
}

就会自动运行到析构 函数哦
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2017-06-17 · TA获得超过3956个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1447万
展开全部
析构函数只是在对象被释放前“自动调用”的函数,它本身没有释放内存的功能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式