开发者社区> eddie小英俊> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

如何解决vector 析构函数的异常 opencv Assert _CrtIsValidHeapPointer

简介:
+关注继续查看

一气呵成代码,但是,当发生执行_CrtIsValidHeapPointer例外,去搭调了一上午Bug。最终获得


跟踪定位到 _CrtIsValidHeapPointer ,注意到 g 8h"@dbgheap.c 文件里 _CrtIsValidHeapPointer 处凝视:


         /*
         * If this ASSERT fails, a bad pointer has been passed in. It may be
         * totally bogus, or it may have been allocated from another heap.
         * The pointer MUST come from the 'local' heap.
         */


         _ASSERTE(_CrtIsValidHeapPointer(pUserData));


大概是由于 dll 假设静态链接了执行时库,dll 就会拥有独立于应用程序堆(也称作local heap)的执行时堆实例。此时在 dll 外部就不能訪问此 local heap,所以也就有上面所出现的异常啦。MSDN 中也有介绍:


The _CrtIsValidHeapPointer function is used to ensure that a specific memory address is within the local heap. The local heap refers to the heap created and managed by a particular instance of the C run-time library. If a dynamic-link library (DLL) contains a static link to the run-time library, it has its own instance of the run-time heap, and therefore its own heap, independent of the application's local heap. When _DEBUG is not defined, calls to _CrtIsValidHeapPointer are removed during preprocessing.



程序崩溃在当析构一个带有vector成员函数对象的时候,在析构vector时,会出现这个错误,大致原因是由于析构的时候找不到vector分配的空间

一行一行查看代码发现,对象里面的points2, status等vector变量是在calcOpticalFlowPyrLK(img1, img2, points1, points2, status, similarity, window_size, level, term_criteria, lambda, 0); 函数中分配的,即opencv的dll,所以当对象进行析构的时候,由于不能訪问此local heap所以会有异常崩溃。



解决方法:

在调用opencv的函数之前,自己进行空间的分配



另一种可能是由于VS版本号和opencv使用的版本号不一致创建,同hog当检测行人,这似乎是问题

版权声明:本文博客原创文章,博客,未经同意,不得转载。







本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4752294.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
sap.ca.scfld.md.Startup.init('cus.crm.notes', this);
Created by Wang, Jerry, last modified on Feb 25, 2015
42 0
Openstack Nova 源码分析 — 使用 VCDriver 创建 VMware Instance
目录 目录 前言 流程图 nova-compute vCenter 前言 在上一篇 Openstack Nova 源码分析 — Create instances (nova-conductor阶段) 中,记录了 nova-api 接收到创建虚拟机的请求后,在 nova-conductor 中的执行流程。
1264 0
免费下载!Twitter Bootstrap V3 矢量界面素材
  Bootstrap 3 Vector UI Kit 包含所有矢量格式的 Twitter Bootstrap 3 界面控制元素、Glyphicons 以及额外的一些界面素材,而且基本的图形元素都切好图了,代码也有了,特别适合用于 Web 原型设计和后台管理应用程序界面设计。
716 0
【HBase】start master 与 start master --backup 的区别
   我们都知道hbase 集群中通常有一个master 节点,多个region server节点,为了防止HBase 集群中master的单点故障,可以向集群中添加一个slave master,这些新添加的master 会分布在不同的物理机器上,因此以最坏的情...
713 0
Bootstrap系列 -- 16. 文本域textarea
  文本域和原始使用方法一样,设置rows可定义其高度,设置cols可以设置其宽度。但如果textarea元素中添加了类名“form-control”类名,则无需设置cols属性。因为Bootstrap框架中的“form-control”样式的表单控件宽度为100%或auto。
855 0
925
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载