程序堆区对象调用析构函数导致程序中断
2021/12/17 9:19:53
本文主要是介绍程序堆区对象调用析构函数导致程序中断,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
场景:
1.程序将解析好的协议对象(通过new创建的)放入队列中使用,队列使用之后释放协议对象,第一次释放成功了,第二次释放导致程序中断。
产生原因:
1.因为协议对象在拷贝构造的时候,有成员变量为std::list<class *>类型。拷贝构造函数中直接使用等号赋值,而其默认为浅拷贝。 此成员变量在程序中只有一份,所以第一次释放之后,第二次就中断了。
解决办法:
1.拷贝构造函数中使用深拷贝
2.将成员变量类型转为std::list<class >类型。(对象在堆区创建,则其所有成员变量都存在于堆区)
这篇关于程序堆区对象调用析构函数导致程序中断的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性
- 2024-05-29哪些无用敏捷指标正在破坏敏捷转型?
- 2024-05-29鸿蒙原生应用再新丁!新华社 入局鸿蒙
- 2024-05-29设计模式 之 迭代器模式(Iterator)