先说结论:不管你有没有用到,哪怕有多自信没有多余复制,也要写一个重载掉默认的拷贝函数,或者删掉拷贝构造函数。“你绝对没用但人家标准库用,一个浅拷贝过去不就完蛋啦”
因为不想再经历这种痛楚,总结一下:硬是没有的话,在这个方面考虑下---拷贝构造-拷贝赋值-移动构造-移动赋值---。保持习惯(不复制多少给它删了),凡是里面出现new了,且哪怕智能指针说会帮你处理qwq
找了半下午,找不到然后下了两个静态分析软件,还硬是找不到。
然后另开一个项目用最简单的代码复现排查,又是半下午,因为出事的地方看起来完全不搭边,这只排查姬完全没出error。
那个error长这样
经过好像有奇怪xp的变态一样的各种整改,这个error有好多种变体,建议看输出那里的日志
注释掉排查也不好使,可能我设计的不够好,一个地方注释会连带着很多地方都要注释。
不知道内部给我搞什么鬼了,把重载决议学了个底朝天,所有地方都不可能有问题!然后把所有无关的都delete了免得编译器做奇怪的优化,然后侥幸发现了
瞬间就知道是这浅拷贝的鬼鬼了。然后又找了半天,我没用到这个吧?最后也没找到我哪里做了拷贝,绝对不是我学艺不精啊!肯定是编译器又偷偷背着我拷贝东西!