一.釋放的問題
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)