呼叫第三方動態庫計算記憶體區塊大小,使用 _msize 時觸發 ASSERT 斷言失敗,錯誤點在 _CrtIsValidHeapPointer(pUserData),提示「The pointer MUST come from the 'local' heap」。
在 Windows C++ 執行環境中,每個模組(EXE 或 DLL)擁有獨立的 CRT 堆(Local Heap)。指標必須來源於同一模組的堆分配函數(malloc/new),跨模組傳遞指標並嘗試在另一模組釋放或查詢大小,會導致堆驗證失敗。
Allocate/Free 介面。HeapAlloc/HeapFree)或 COM 記憶體管理(CoTaskMemAlloc/CoTaskMemFree)。參考資料:CSDN 詳細解析。