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

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

欢迎来到英杰社区https://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环境变量中,以避免潜在的冲突。

【其他错误】

如果出现模块错误

python 复制代码
进入控制台输入:建议使用国内镜像源

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/
相关推荐
软件技术新观察1 分钟前
企业数字化开发科普:软件定制、小程序、APP 开发全解析
人工智能·小程序
她的男孩5 分钟前
AI 写完 100 万行代码没人 Review,我做了一件事:把 AI 写的代码管起来了
java·人工智能·程序员
差不多的周周8 分钟前
《MoChat:面向多转弯动作理解和描述的关节分组时空接地多通道大语言模型》论文核心部分详解
人工智能·深度学习·机器学习·计算机视觉·语言模型·自然语言处理
jimmyleeee8 分钟前
大模型安全之七:LLM系统提示词泄露
人工智能·安全
RobinDevNotes9 分钟前
为什么AI训练工程师都要懂NCCL
人工智能
! 冰封雪莲 !11 分钟前
站房“智慧大脑” | Smart ET2000 污染源自动监控数智终端
大数据·人工智能·万维盈创·ai环境大数据
葡萄城技术团队16 分钟前
不会写 SUMIFS 也能做汇总?用 SpreadJS AI 生成并解释 Excel 公式
人工智能·excel
武子康17 分钟前
同一份长文问两次,SGLang 怎样少算一遍
人工智能·llm·agent
用户52746756142118 分钟前
为什么 retry() 不是 Agent 的恢复策略
人工智能
蜘蛛小助理20 分钟前
AI 自动推导业务自动化规则实战教程|多维表格低代码自动化落地
大数据·人工智能·低代码·自动化·多维表格·蜘蛛表格