编程语言
首页 > 编程语言> > 程序堆区对象调用析构函数导致程序中断

程序堆区对象调用析构函数导致程序中断

作者:互联网

场景:

  1.程序将解析好的协议对象(通过new创建的)放入队列中使用,队列使用之后释放协议对象,第一次释放成功了,第二次释放导致程序中断。

产生原因:

  1.因为协议对象在拷贝构造的时候,有成员变量为std::list<class *>类型。拷贝构造函数中直接使用等号赋值,而其默认为浅拷贝。  此成员变量在程序中只有一份,所以第一次释放之后,第二次就中断了。

解决办法:

  1.拷贝构造函数中使用深拷贝

  2.将成员变量类型转为std::list<class >类型。(对象在堆区创建,则其所有成员变量都存在于堆区)

标签:变量,对象,堆区,程序,析构,拷贝,构造函数
来源: https://www.cnblogs.com/xian-yongchao/p/15700723.html