已解决:Vector析构异常Opencv Assert _CrtIsValidHeapPointer

已解决:Vector析构异常Opencv Assert _CrtIsValidHeapPointer

欢迎来到英杰社区icon-default.png?t=N7T8https://bbs.csdn.net/topics/617804998

         欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区主理人

        擅长.net、C++、python开发, 如果遇到技术问题,即可私聊博主,博主一对一为您解答

         修改代码、商务合作:

Yan--yingjie

Yan--yingjie

Yan--yingjie

一、问题描述

代码运行时出现_CrtIsValidHeapPointer的异常

跟踪定位到 _CrtIsValidHeapPointer ,注意到g8h"@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, windowsize, level, termcriteria, lambda, 0); 函数中分配的,即opencv的dll,所以当对象进行析构的时候,因为不能访问此local heap所以会有异常崩溃。

二、解决方法

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

2 还有一种可能是因为VS版本和opencv使用的版本不一致造成,在用hog进行行人检测的时候,出现的即是这个问题。

3.手动分配内存:在调用OpenCV函数之前,手动分配所需的内存空间。

4.确保版本一致性:确保Visual Studio的版本与OpenCV库的版本相匹配。

5.避免将DLL添加到PATH:直接将DLL复制到可执行文件的路径中,而不是添加到PATH环境变量中,以避免潜在的冲突。

  【其他错误】

如果出现模块错误

进入控制台输入:建议使用国内镜像源pip install 模块名称 -i https://mirrors.aliyun.com/pypi/simple我大致罗列了以下几种国内镜像源:清华大学
https://pypi.tuna.tsinghua.edu.cn/simple阿里云
https://mirrors.aliyun.com/pypi/simple/豆瓣
https://pypi.douban.com/simple/百度云
https://mirror.baidu.com/pypi/simple/中科大
https://pypi.mirrors.ustc.edu.cn/simple/华为云
https://mirrors.huaweicloud.com/repository/pypi/simple/腾讯云
https://mirrors.cloud.tencent.com/pypi/simple/

【粉丝福利】

更多粉丝福利,关注下方公众号获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写MyBatis 重要基本原理框架

1. 手写MyBatis 重要基本原理框架 文章目录 1. 手写MyBatis 重要基本原理框架1.1 第一步:IDEA中创建模块1.2 第二步:资源工具类,方便获取指向配置文件的输入流1.3 第三步:定义SqlSessionFactoryBuilder类1.4 第四步:分…

记录一次root过程

设备: Redmi k40s 第一步, 解锁BL(会重置手机系统!!!所有数据都会没有!!!) 由于更新了澎湃OS系统, 解锁BL很麻烦, 需要社区5级以上还要答题。 但是,这个手机…

T113 Tina5.0 添加板级支持包

文章目录 环境介绍添加板级支持包修改板级文件验证总结 环境介绍 硬件&#xff1a;韦东山T113工业板 软件&#xff1a;全志Tina 5.0 添加板级支持包 进入源码目录<SDK>/device/config/chips/t113/configs&#xff0c;可以看到有如下文件夹&#xff1a; 复制一份evb1_…

React基础教程(07):条件渲染

1 条件渲染 使用条件渲染&#xff0c;结合TodoList案例&#xff0c;进行完善&#xff0c;实现以下功能&#xff1a; 当列表中的数据为空的时候&#xff0c;现实提示信息暂无待办事项当列表中存在数据的时候&#xff0c;提示信息消失 这里介绍三种实现方式。 注意这里的Empty是…

react-day1

1.react是什么呢&#xff1f; react是由Meta公司开发&#xff0c;是一个用于构建web和原生交互界面的库 2.react 项目修改文件保存后 &#xff0c;不能实时更新&#xff0c;需要&#xff1a; 在和package.json文件同目录的地方&#xff0c;新建.env文件&#xff1a;里面加入…

【vue】终端 常用代码 和其他注意

&#x1f951;这里目录 一、【安装】1. 搜版本2.卸载3.安装 带版本4. 纯安装&#xff08;自动最新&#xff09; 二、【官网】官网源码及用法讲解1.【npm】2.【printjs】打印 一、【安装】 以下全拿 qrcode.vue 举例 1. 搜版本 例子&#xff1a;搜 qrcode.vue的版本代码&…

SPI总线协议

目录 一、简介 二、接口 三、传输模式 ​四、数据交换 五、多从机配置 1、常规SPI模式 2、菊花链模式 一、简介 串行外设接口&#xff08;SPI&#xff09;是微控制器和外围IC&#xff08;如传感器、ADC、DAC、移位寄存器、SRAM等&#xff09;之间使用最广泛的接口之一。…

SpringBoot【2】集成 MyBatis Plus

SpringBoot 集成 MyBatis Plus 前言修改 pom.xml修改配置文件添加 实体类添加 持久层接口添加 持久层 XxxMapper.xml 文件添加 业务接口层添加 业务接口实现类添加 控制层添加 MyBatis 配置AutoFillMetaObjectHandlerMyBatisPlusConfig 验证 前言 由于 MySQL 备份/恢复测试&am…

Spring-JdbcTemplate

了解知道即可 JdbcTemplate环境配置 先加入依赖&#xff1a; 在pom.xml中要引入spring和mysql的依赖&#xff1a; <!--仓库和依赖--><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><ur…

Java阻塞队列:ArrayBlockingQueue

Java阻塞队列&#xff1a;ArrayBlockingQueue ArrayBlockingQueue是Java中的一个阻塞队列&#xff08;Blocking Queue&#xff09;实现&#xff0c;它是线程安全的&#xff0c;并且基于数组实现。ArrayBlockingQueue常用于生产者-消费者模型&#xff0c;在这种模型中&#xff…

某集团数字化转型蓝图规划项目案例(94页PPT)

案例介绍&#xff1a; 本集团数字化转型蓝图规划项目通过确定目标&#xff0c;如制定集团数字化转型的整体战略和规划&#xff0c;明确转型方向和目标。构建数字化业务体系&#xff0c;实现业务流程数字化、智能化。搭建数字化管理平台&#xff0c;提升集团内部的管理效率和决…

Pyshark——安装、解析pcap文件

1、简介 PyShark是一个用于网络数据包捕获和分析的Python库&#xff0c;基于著名的网络协议分析工具Wireshark和其背后的libpcap/tshark库。它提供了一种便捷的方式来处理网络流量&#xff0c;适用于需要进行网络监控、调试和研究的场景。以下是PyShark的一些关键特性和使用方…

C语言期末考试大纲详解

一&#xff1a; C语言的基本概念 C语言是一种通用的、过程式的计算机编程语言&#xff0c;设计提供了低级内存访问和简单、灵活的语言结构。以下是关于C语言的一些基本概念和组成部分的详细解释。 文件扩展名 .c&#xff1a;这是C语言源代码文件的扩展名。它包含了程序员编…

Noisee 和 Suno创作十二生肖震撼视频 – 有详细的实操步骤

历史文章 日赚800&#xff0c;利用淘宝/闲鱼进行AI音乐售卖实操 如何让AI生成自己喜欢的歌曲-AI音乐创作的正确方式 抖音主播/电商人员有福了&#xff0c;利用Suno创作产品宣传&#xff0c;让产品动起来-小米Su7 用sunoAI写粤语歌的方法&#xff0c;博主已经亲自实践可行 …

docker desktop for mac os如何使用本地代理

在macbook上弄了个代理&#xff0c;然后按照网上所说的去配代理 然后测试下 docker pull busybox 结果无反应&#xff0c;超时。我去&#xff01;&#xff01;&#xff01; 鼓捣了半天&#xff0c;看了docker官网&#xff0c;问了chatgpt &#xff0c;按照它们所说的试了下也没…

想学编程,什么语言最好上手?

Python是许多初学者的首选&#xff0c;因为它的语法简洁易懂&#xff0c;而且有丰富的资源和社区支持。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频 讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;…

Gone框架介绍26 - Gone v1.x 版本 正式发布,更加强大的依赖注入,更加卓越的执行效率

gone是可以高效开发Web服务的Golang依赖注入框架 github地址&#xff1a;https://github.com/gone-io/gone 文档地址&#xff1a;https://goner.fun/zh/ 文章目录 优化和新特性gone 核心功能增强内置Goners覆盖测试 后续计划 优化和新特性 gone 核心功能增强 重构了函数参数依…

【区分】累次极限与二重极限

累次极限与二重极限不要混淆&#xff0c;区分好下面5个命题

Python学习笔记13 -- API的说明及使用

一、API说明 1、API&#xff1a;Application Programming Interface -- 接口 2、Restful API&#xff1a;基于网页的API 3、JSON&#xff1a;JavaScript objection Notation 4、很多数据都可以找到公用API 二、安装requests模块 在终端输入&#xff1a; 可以保证使用当前…

单片机多个中断源时的设计思路,(51为例)工作寄存器R0-R7

51单片机中四组工作寄存器&#xff08;R0-R7&#xff09; 参考 可以看出每个工作寄存器区有8个字节即为R0-R7&#xff0c;当不指定使用哪个工作寄存器区的时候默认0区。其他工作区作为普通的RAM使用。特殊功能寄存器中有可以位寻址和不能位寻址的区域 下面文字引用 通过修改…