都是
0x7c931ec3 處未處理的異常: 0xC0000005: 寫入位置 0x018990ba 時發生訪問沖突 。
0x7c931f52 處未處理的異常: 0xC0000005: 讀取位置 0x000c01e3 時發生訪問沖突 .這樣的異常
觀察調用堆棧發現問題都在new和delete函數里,發生的錯誤都在ntdll.dll
還有就是錯誤報告也很有意思,明明是intel的CPU,可它的提示是
錯誤報告:CPU AMD Feature Code: 00C3E824......
我的代碼應該沒問題,要不然怎么在我的舊電腦和我同學的電腦上沒發生過內存異常
最近我遇到了一個BUG,一直找不出原因,看到你這篇文章,我想問問你是否遇到過類似的問題.
我前幾天買了臺新電腦,P4 64bit的CPU,我的舊電腦是AMD 64bit的,都是32位的XP系統,我的程序在我的舊電腦上運行了了20多天(15-30個進程,每天運行20個小時),從來沒有發生過內存異常.但我的程序在新電腦上頻繁發生異常,運行3個進程平均二小時就會發生一次,經過調試發現異??偸浅霈F在內存分配和釋放里:
1:局部string對象的自動釋放出錯(STL的string);
2;new出錯,而且new的字節也很小,才200字節左右;
3:delete出錯,被刪除的內存塊調試發現也是正常的,并不是無效內存塊;
開始我以為是因為多個線程同時申請堆內存,導致出現爭奪的情況,于是我給每一個new和string構造的地方都加了EnterCriticalSection(&cs);LeaveCriticalSection(&cs);,結果還是頻繁出現異常.
這BUG真的很古怪,而且我在我同學的電腦上運行了4天(60個進程,20小時每天),一個異常都沒出現