vc 6.0 new 導致的終極bug

關於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 

上面的連接是 前輩給出的解決方案

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章