关于解决在使用opencv时出现*.exe 已触发了一个断点的问题

最近在用opencv的时候发现程序老是莫名其妙出现“触发一个断点”问题。这种在编译和链接都没有问题,只在最后程序运行的时候出现的问题,实在是很不好找问题。错误信息量又不够多,导致百度老是找不到想要的解决方案。今天碰巧解决了这个问题,为了防止之后自己再遇到这个问题不会做,写下这篇博客警醒自己。我用的是VS2017(有点新),基本出错的页面是这样的。

如果程序触发断点,多半是内存读写的问题。这个时候要找错误的话需要找到“调用堆栈”这个窗口,在VS2017的默认窗口下实在右下角的这个位置。

        在堆栈里一个一个的找基本就知道问题出在哪里了。像我这个程序最后我发现是在vector的析构时出了问题。

        所以最后我就百度了一下为什么vector析构会出问题,最后在这个网站点击打开链接上找到了解决方案。里面他的解释是:这个不是opencv的问题,是调用dll的问题,dll中给vector分配成员空间,无论你是传引用,还是指针,只要vector的初始化容器大小,放不下成员,在dll中就会给vector增加空间,故解决方法如下:

预先在自己程序中分配好,1000只是个估值,根据实际大小最大值来设置。

所以我试着把我函数里所有的vector变量都预定义内存,之后就没出现这个问题了。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值