1. 程式人生 > 其它 >C++中出現_CrtlsValidHeapPointer(block)錯誤

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)