我有一個客戶端通過套接字連接的應用程序。該應用程序是多線程的,執行大量的數字運算,並消耗大量的內存。 (1.5 - 2 GB)偶爾它會在一個看似簡單的代碼區域拋出這個錯誤。試圖讀取或寫入受保護的內存。這通常表示其他內存已損壞
試圖讀取或寫入受保護的內存。這通常表明其他內存已損壞。
它並不總是在同一行,但它總是在同一個文件中,在foreach循環中。我想知道在VS 2008中是否有一些設置會導致它? Theres沒有任何奇怪的事情,它真的只是在一個遍歷List的foreach循環中死去。我很確定它不是一個線程問題,因爲我使用的是lock(),所以我100%確定這個列表是由多個線程同時修改的。我試過關閉編譯器優化,但它仍然每隔一段時間都會執行一次。很煩人。
這是非常罕見的發生。我在調試中運行服務器,這隻發生在每12-48小時一次。
我100%確定它是一個線程或一個簡單的內存損壞問題。 – nos 2010-09-30 00:42:03
這是一個純粹的C#應用程序?任何/不安全的代碼?任何通過pinvoke調用DLL?任何第三方類庫 – pm100 2010-09-30 00:58:28
其純C#,沒有不安全的代碼。沒有第三方圖書館。我也會假設線程,但是有問題的代碼塊是用一個lock()包裝的。列表中的對象可能會被已經有引用的不同線程修改,但不是列表本身。我會假設如果它是一個線程問題,我也會看到收集修改錯誤。它實際上可能是一個不好的記憶棒? – Nathan 2010-09-30 13:30:03