为了账号安全,请及时绑定邮箱和手机立即绑定

关于析构函数

自己定义的析构函数能消除定义的对象吗?已经有delete p  为什么还要调用自己编写的析构函数? 好像不是很明白

正在回答

2 回答

new出来的对象是需要手动delete掉的,在delete的时候,系统会调用你写的析构函数,给你一个自己释放资源的机会

0 回复 有任何疑惑可以回复我~
#1

全栈港 提问者

也就是说,如果程序员编写的析构函数没有释放,系统会自动给你生成并调用系统编写的析构函数来示放内存吗?
2016-01-06 回复 有任何疑惑可以回复我~
#2

絮絮念秋风 回复 全栈港 提问者

C++没有GC(垃圾回收机制),所以手动申请的内存需要手动释放(new->delete,malloc->free),系统的析构函数里面啥都没干,只是把非“堆内存(动态申请的内存)”释放掉。所以你还需要自己在析构函数里面手动释放,否则有内存泄露。
2016-01-07 回复 有任何疑惑可以回复我~
#3

全栈港 提问者

非常感谢!
2016-01-07 回复 有任何疑惑可以回复我~

p是从堆中申请的内存,无法自动释放 需要程序员自己释放内存。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103410    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

关于析构函数

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信