C++ abort() has been called错误

程序可以成功编译,说明没有语法问题,应是代码内部的问题,报错如下:
在这里插入图片描述
abort() has been called:中止被调用,该错误出现有很多原因,查询了多条博客后,发现一卒2018博主已经在博客上总结了几条原因和解决办法,谢谢博主,借博主的思路成功解决问题。

原因:
1.非法指针访问和内存泄漏
2.设置的指针范围跟你运行的不对
3.指针访问内存越界出现问题。
4.因为不支持中文。
5.内存不够分配
6.多线程访问资源出的问题。
7.检查exe和dll是否混用的不同版本的crt

办法:
第一:检查申请的空间没有释放
第二:检查堆栈空间是否已经被全部分配满,建议每次内存分配尽量不要太大,并且记得释放
第三:指针指向了不可预期的内存位置

问题分析:
继上面某篇关于小孔定位的博客,使用三点法定位圆心,将轮廓点均分为3份,每份上取一点,没有错误。为了避免孔轮廓外点的干扰,循环取3次,最后求出均值作为结果,然后偶尔会出现如上错误。
通过不断代码分块调试,很快定位到问题的出处,当第3次循环时,第3点极有可能超出点总数。
问题解决:
将轮廓点均分为4份,在前3份上取3点,当第3次循环时,第3点最大也只是在第4份上,不会超出轮廓总数。

  • 27
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值