您没有复制构造函数.
当您将'a'推入列表时,它会被复制.因为您没有复制构造函数(为c分配内存并从旧c复制到新c)c是a中的相同指针和列表中a的副本.
两个的析构函数都被调用,第一个将成功,第二个将失败,因为内存c指向已经被释放.
你需要一个复制构造函数.
要查看发生了什么,请在构造函数和析构函数中添加一些couts并逐步执行代码.
您没有复制构造函数.
当您将'a'推入列表时,它会被复制.因为您没有复制构造函数(为c分配内存并从旧c复制到新c)c是a中的相同指针和列表中a的副本.
两个的析构函数都被调用,第一个将成功,第二个将失败,因为内存c指向已经被释放.
你需要一个复制构造函数.
要查看发生了什么,请在构造函数和析构函数中添加一些couts并逐步执行代码.
你需要一个深拷贝构造函数来避免double free().你有一个temp类的变量(a),然后你将它添加到列表中.变量被复制.然后清除列表,内部元素被销毁并调用free().然后,一个变量被销毁和free()再次呼吁,这导致分段错误相同的地址.
您需要一个复制构造函数来深度复制类临时变量,这将使malloc()另一个缓冲区和复制数据.