永发信息网

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

答案:7  悬赏:60  手机版
解决时间 2021-03-31 22:54
C++中 析构函数是用来释放内存,那么自定义的析构函数,能释放内存吗?
最佳答案
就算是你自定义了析构函数,默认析构函数同样会存在,而且会执行。当类中有类对象成员时,首先调用的是自定义的析构函数,然后这个类对象成员资源的释放,就是由默认析构函数来释放的。因为指针不属于对象成员,因此默认析构函数不会管他,需手动释放指针的资源(主要是new)例class B{public:~B(){cout<<"B";}}; class A{public: B mb; ~A(){}}; void main(){ A ma;} 在类A中的析构函数什么也没做,也就是没有释放类成员mb的资源,但类B的析构函数仍执行了,这个类对象成员mb的资源释放,就是使用的类A的默认析构函数进行的。
全部回答
可以自定义析构函数,写上自己的逻辑就行。除了释放内存还能添加其他代码,
析构函数只是在对象被释放前“自动调用”的函数,它本身没有释放内存的功能。
默认的析构函数什么都不做的,如果要释放内存 需要你自己加上
析构函数就是在对象生命周期结束时自动调的最后一个函数,需要实现什么功能都由你自己控制追问默认的析构函数什么都不做?不会吧,书上说,这是用来释放对象的啊,程序结束时,会调用每一个对象的默认析构函数,难道这个函数什么都不做?追答如果你不写什么东西,那么它真的什么都不做 :)
这是用来释放对象的,这句话没错,它存在的原因就是释放,但是怎么释放,需要你来告诉它
你可以做这样一个测试,在构造函数中申请一段内存,然后不写析构函数,也就是用默认析构函数
在程序的其他地方把这个内存值保存起来
在定义对象生命周期结束后再调用这段内存,看是否会出问题,不出问题证明它没有被释放
:)追问我的意思是,默认析构函数,有它本身的功能吧?

那么我自定义一个析构函数,它还具有本身的功能吗?追答可以很确定的说 默认析构函数没有任何特殊的功能 它就是一个空函数
系统自带的类的析构函数已经都做好了,你自己写的类的析构函数默认是空的,如果在类中开辟了一些堆空间来使用的话,最好检查你使用之后有没有释放掉,如果没有释放就要在析构函数中释放掉,不然容易造成内存浪费。追问程序结束时,会自动调用默认析构函数来释放对象是吧?

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

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

如果没有,那还叫析构函数么?追答系统默认的析构函数只会释放系统自己创建的一些内存空间。
如果你在类中用了new之类的在块堆开辟了新的空间,那么你必须在使用结束时候delete掉这部分空间,系统自带的析构函数不会帮你释放这一部分空间的。追问我的意思是,默认析构函数,有它本身的功能吧?
那么我自定义一个析构函数,它还具有本身的功能吗?
析构函数不是用来释放内存吧。程序不会显式调用析构函数啊,通过new操作符创建的对象,最后要通过delete操作符删除。
delete操作符会调用析构函数做一些工作,然后用operator delete释放内存。
当然能了,你知道把要释放资源的语句, 放到析构函数里,那么当这个单位结束自己的寿命周期.比如:
{
myClass a;
{
myClass m;
m.init()
...
}
//走到这里 m已被回收,而a没有
}.
或者被delete
{
myClass *a=new myClass()
delete a;
}
就会自动运行到析构 函数哦
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
古代头盔都有什么材质的?
我的神州行电话卡服务密码能不能从8位数改成6
措施钢筋包含哪些内容,措施钢筋包含哪些内容
QQ正在后台运行是什么意思?怎么才能把它消除
正数补0负数补1 为什么11补的是1?
迈锐宝的油耗多少正常
道格拉斯瓷砖的瓷质釉面砖好么?
象棋残局第一局怎么破
虎牙lolssr卡谁有
米格战机系列哪种机型最厉害?
我在淘宝上买了一个东西图片上写着满额包邮
求简便计算大全方法?
有理数的乘法为什么正负号会变,负数变正数,
(二泉映月)是什么调?????????求大
苗圃结婚了吗😳
推荐资讯
锅炉压力容器用钢板标准gb/t713-2014可以
西宁女性怀孕多长时间会出现早孕反应
手相两个萝八个筲箕是什么意思
欠账当事人过世,如何处理欠账的经济纠纷
萌新请问,剑豪走火属性还是冰属性啊
宴会开始时,主客分别应该说哪些话来调动宴会
谈笑什么声成语
为什么上世纪80年代日元升值导致日本地价连续
考焦作市十二中,多少分?
他在不远处看我为什么?
笔记本电脑如何使用YY语音
QQ空间怎么批量删除日志?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?