C++中出现_CrtlsValidHeapPointer(block)错误

一.释放的问题

1,内存不能跨模块分配和释放,模块分配的内存必须由该模块自己来释放。应该在DLL中再加一个方法,比如MemRelease,主程序调用这个方法来释放内存。

2,就是绕过new和delete,用GlobalAlloc()和GlobalFree()的方法

二.动态链接库的问题

这个问题有两种情况:

1.链接外部lib出错:当前是Debug模式,但工程属性->Configureation Properties->Linker->Input->Additional Dependencies 中的链接库用的却是Release版本的,这个要仔细检查才行。相同道理,Release的模式下也有错用Debug链接库的问题。

2.ruantime Linbrary 方式选择错误:工程属性->Configureation Properties->C/C++->Code Generation->Runtime Library中的选项有可能与当前的编译方式不符。比如当前是Release模式却选择了Multi-threaded Debug DLL (/MDd),相反当前是Debug模式却选择的是Multi-threaded DLL (/MD)。

 

我调用的相机SDK的lib是Realease版本的,Debug开发时遇到了此情况。

【参考】

_CrtIsValidHeapPointer出错的解决方法,找到了根本原因啦!_反对反对_新浪博客 (360doc.com)

posted @ 2022-03-24 13:02  夕西行  阅读(2254)  评论(0编辑  收藏  举报