程序可以成功编译,说明没有语法问题,应是代码内部的问题,报错如下:
abort() has been called:中止被调用,该错误出现有很多原因,查询了多条博客后,发现有网友总结了几条原因和解决办法,谢谢网友,借网友的思路成功解决问题。
原因:
1.非法指针访问和内存泄漏
2.设置的指针范围跟你运行的不对
3.指针访问内存越界出现问题。
4.因为不支持中文。
5.内存不够分配
6.多线程访问资源出的问题。
7.检查exe和dll是否混用的不同版本的crt
办法:
第一:检查申请的空间没有释放
第二:检查堆栈空间是否已经被全部分配满,建议每次内存分配尽量不要太大,并且记得释放
第三:指针指向了不可预期的内存位置
问题分析:
继上面某篇关于小孔定位的博客,使用三点法定位圆心,将轮廓点均分为3份,每份上取一点,没有错误。为了避免孔轮廓外点的干扰,循环取3次,最后求出均值作为结果,然后偶尔会出现如上错误。
通过不断代码分块调试,很快定位到问题的出处,当第3次循环时,第3点极有可能超出点总数。
问题解决:
将轮廓点均分为4份,在前3份上取3点,当第3次循环时,第3点最大也只是在第4份上,不会超出轮廓总数。