"Expression: _CrtIsValidHeapPoint(pUserData)"錯誤分析與解決
阿新 • • 發佈:2018-11-28
程式執行時報出錯誤並彈出異常彈框,"Expression: _CrtIsValidHeapPoint(pUserData)"
一頭懵,找不到具體哪行程式碼出錯誤,但是會提示出錯誤位置:
HeapValidate( _crtheap, 0, pHdr(pUserData) );_ASSERTE(_CrtIsValidHeapPointer(pUserData)); 本人分析有兩種原因導致這個錯誤: 1、記憶體釋放產生的堆疊出錯;
解決方法: 1、記憶體不能跨模組分配和釋放,模組分配的記憶體必須由該模組自己來釋放。比如我在DLL中分配了一個記憶體,但是在DLL中沒有釋放,最後在主程式的exe中刪除釋放的,這樣就會報出這個錯誤。需要在分配記憶體的模組中free或delete記憶體,一般都是指標記憶體或者vector集合需要釋放記憶體。
2、動態連結庫(DLL)問題也有兩種情況
總結:遇到問題一定要耐心的尋找問題的根源,不能盲目的除錯。