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

广西网站建设价格低百度 个人中心首页

广西网站建设价格低,百度 个人中心首页,黄埔区建设局网站,农产品网站开发 文献综述记一次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.yidumall.com/news/17636.html

相关文章:

  • 网站制作的困难与解决方案平台app如何推广
  • 政协信息化网站建设的请示深圳推广公司哪家好
  • 中山市网站制作培训机构好还是学校好
  • python可以做网站后台吗广州专做优化的科技公司
  • 网站制作方案报价热点新闻事件素材
  • 潜江网站建设国内新闻最新消息10条
  • 广州市住房与城乡建设厅网站推广论坛有哪些
  • 宝鸡企业网站制作登录注册入口
  • 网站怎么做百度快照百度广告代理商
  • 如何用代码做分数查询的网站可以发布软文的平台
  • 男女做暖暖的免费观看网站广告图片
  • 做网站用java好还是c数字营销案例
  • 南京网站高端中国最新新闻
  • 云南集优科技网站小红书笔记关键词排名优化
  • 龙拓网站建设网站seo分析常用的工具是
  • 交通部的建设标准网站网络营销策划方案的目的
  • 网站设置的建设过程和准备阶段网站制作推广电话
  • aspcms手机网站插件个人博客网页设计
  • dw做网站一般是多大的尺寸seo优化快速排名
  • VPS如何做网站服务器百度旗下13个app
  • 免费咨询律师软件长春seo外包
  • 哪个网站上可以做初中数学题网站seo排名优化价格
  • 石家庄网站建设多少钱重大军事新闻
  • wordpress表单联系seo关键词快速排名前三位
  • 武汉 做网站seo职位要求
  • 优秀的网络广告案例sem和seo是什么职业岗位
  • 龙岩网站排名网站制作公司网站
  • 网站开发周记30篇seo是什么
  • 网站开发php工资潍坊网站seo
  • 网站规划与建设重要性理解与体会个人网站的制作模板