1
我將Perl嵌入到使用Smartheap的C++應用程序中。無論我編譯perl使用它自己的malloc還是系統的,我都會得到一堆錯誤的mem___bad_pointer對話框。它似乎工作正常,當我只點擊「確定」,並忽略錯誤,但顯然我需要真正解決問題。爲什麼MIcroQuill Smartheap在嵌入perl後拋出「mem_bad_pointer」錯誤?
我可能需要編譯SmartHeap到我的Perl構建?這甚至可行嗎?
下面是the only documentation關於mem__bad_pointer的頁面我可以找到,但我沒有更接近解決問題。我不明白perl和Smartheap在彼此之間的衝突。任何指針讚賞。
- 指針由SmartHeap以外的內存管理器(例如其他DLL或EXE)或編譯器運行時庫分配。檢查您的映射文件以查看是否連接了malloc,_fmalloc/farmalloc或operator new的SmartHeap版本。
- 指針是「wild」(未初始化),分配在堆棧(本地變量)上,或者是否則無效。
- 指針以前已釋放。如果SmartHeap釋放了指針最初分配的頁面,則SmartHeap將無法檢測到它是雙倍空閒的。但是,SmartHeap會報告無效指針。使用dbgMemDeferFreeing來捕獲這種類型的錯誤。
- 指針從分配時開始遞增或遞減。
- 對於16位x86,分配後指針被轉換爲近指針,在這種情況下,指針的段部分已丟失。
- 指針分配的內存池已被釋放,或者SmartHeap已從任務中註銷。
- 分配了指針的任務已終止(請參閱B.4節)。