当前位置: 首页 > news >正文

广西网站建设价格低广州seo外包多少钱

广西网站建设价格低,广州seo外包多少钱,南通网站建设,wordpress淘宝值得买记一次bug调试。。。。 我定义了一个类,测试的时候,调用它的方法出现了free(): double free detected ,但是调用其他方法是正常的。这个错误,字面意思就是检测到了双重释放。是指对于同一块内存,释放了两次。 我的类…

记一次bug调试。。。。

我定义了一个类,测试的时候,调用它的方法出现了free(): double free detected ,但是调用其他方法是正常的。这个错误,字面意思就是检测到了双重释放。是指对于同一块内存,释放了两次。

我的类里定义了指针变量。我一开始查的时候,看到了这篇文章:链接

这篇文章写的不错,解释的很详细。描述的现象也挺符合我的代码。因为我确实没有写拷贝构造函数和赋值构造函数。而且我又重新翻了c++ primer plus这本书,第六版的364页,确实也描述这个现象。在构造函数中如果使用了new 来申请内存空间,那么析构函数中一定要对应delete删除空间。

于是我加了拷贝构造函数和赋值构造函数,并且严格审查了,new和delete等对内存空间的操作。改好之后。再运行,还是报这个错。直接懵逼。网上的其他答案也不靠谱。

于是,我一步步地把这个方法里地代码删除,想要排查是哪行代码出了问题。直到我把这个方法里地代码都删光了,只要调用这个方法,还是会出问题。再次懵逼。。。。

这时我的目光注意到了方法的传参上。这个方法的参数传入了另一个类:A.method(B b)
这个类B中,也有指针变量,而且操作了内存空间。此时,问题就出在了这。在main函数里,我初始化一个类B b,然后把这个b传入了类A的方法,在类A方法执行结束后,会调用B的析构函数把b给析构掉。而在main函数执行完之后,会调用所有类的析构函数,将实例化的类全部析构掉,这其中也包括了b,所以b的析构函数被调用了两次,也就是free了两次同一块内存空间。

解决办法,在A的方法里不要传入对象,传入B的指针就可以了。
具体点,在main函数中定义B的指针: B *b = new B(); 调用A的方法时传入这个指针:A.method(b);

http://www.hrbkazy.com/news/48914.html

相关文章:

  • xp系统做网站服务器东莞seo外包公司哪家好
  • 十四五专业建设规划排名优化推广
  • 美女网站做国外广告怎么样网站seo优化价格
  • 招商网站平网站平台百度上怎么发布作品
  • 备案 修改网站名称全网推广推荐
  • 哪个网站可以做初一政治试卷贴吧高级搜索
  • wordpress自建站百度直播
  • 织梦网站加滚动公告广告联盟
  • 做网站用java好还是c2022网站快速收录技术
  • 西安网站设计师没经验可以做电商运营吗
  • 豫icp郑州网站建设网络运营和网络营销的区别
  • 百度云架设网站网站统计工具有哪些
  • 阜阳集团网站建设营销手段有哪些方式
  • 成华区响应式网站建设网站推广优化外包公司
  • 法院内部网站建设方案北京网站seo费用
  • 一诺互联 网站建设个人在线做网站免费
  • wordpress开启redisseo怎么做关键词排名
  • 做家具网站要多少钱英文谷歌优化
  • 用ps如何做短视频网站深圳建站公司
  • 哪些网站可以做网店天津网站建设优化
  • js进入网站时有指导怎么做搜索引擎优化有哪些要点
  • 科技服务网站建设内容移动排名提升软件
  • 如何查公司网站谁家做的竞价托管一般多少钱
  • 心理咨询网站平台建设百度识图在线
  • 新网站在谷歌上面怎么做推广引擎优化seo
  • 做购物网站是怎么连接银行南昌seo数据监控
  • 建设企业网站登录901地推接单网
  • wordpress 编辑器按钮seo经理招聘
  • 自助网站建设哪家优惠中国搜索引擎
  • 中国住房建设部网站首页云优化seo