C++中出現_CrtlsValidHeapPointer(block)錯誤
阿新 • • 發佈:2022-03-24
一.釋放的問題
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)