關於VC 6.0的new調用在debug模式下的bug
2018-03-25 16:41:42 發佈者:來源網絡
維護的項目是用VC6.0開發的,安裝到現場運行發現每個月都要崩潰一次,經過檢查dmp文件發現是由VC6.0的crt庫中new操作所對應的代碼引起(Microsoft visual Studio/VC98/Crt/Src/dbgheap.c),這個文件中_heap_alloc_dbg()函數用到一個long型的變量用來計數,一旦該計數器到達long型的最大值就會引發int 3中斷《VC++6.0之new調用的bug》:
if (lRequest == _crtBreakAlloc) _CrtDbgBreak();
這個問題其實很容易解決,經查詢vs2003已經修改爲這樣,已經消除了這個bug:
if (_crtBreakAlloc != -1L && lRequest == _crtBreakAlloc) _CrtDbgBreak();
https://www.etuan.com/zx/135-130900.html
上面的連接是 前輩給出的解決方案