程式出現異常”嘗試讀取或寫入受保護的記憶體這通常指示其他記憶體已損壞”

來源:互聯網
上載者:User
“嘗試讀取或寫入受保護的記憶體這通常指示其他記憶體已損壞"。

System.AccessViolationException: Attempted to read or write protected memory.
This is often an indication that other memory is corrupt.
此類錯誤屢見不鮮了,特別是映像開發,Com組件操作時,不要期望本文能夠給你一個明確的回覆,只能給你提供解決問題的思路:
解決辦法只有一種:慧眼視真或排除法,先看看排除的優先順序吧:

1.如果你用了NativeCode的資源,例如:Com、ActiveX;
沒有強制的釋放方法,底層的com組件根據你進程調用組件的次數來控制對象的增加和釋放(對象釋放會延遲,com自身的問題)。
一般是調用強制記憶體回收或ao內建的回收對象的方法,效果不明顯。
這種對象不釋放的情況,通常出現在應用程式反覆調用頻率極高的情況下,調用間隔的時間小於對象回收的速度,將報這種錯誤。
通常是自己的程式寫的機構不合理,才會產生這種情況。
自己在程式裡強制釋放COM資源,調用Marshal.ReleaseComObject()方法將不再使用的對象釋放掉
並在可能出現異常的地方去Catch,並留下日誌,轉移此異常。

2.指示測試的可執行檔與 Windows 資料執行防止功能相容。
調用dll的程式,在運行時會出現 “嘗試讀取或寫入受保護的記憶體。這通常指示其他記憶體已損壞。"
有關更多資訊,請參見 /NXCOMPAT(與資料執行防止相容)。
編譯器中加入了對DEP的安全性檢查,在編譯完後的exe檔案中取消NXCOMPAT位可解決該問題
editbin.exe /NXCOMPAT:NO myexe

3.排除環境因素:例如.net Fx 2.0和 .net Fx 2.0 SP2差距很大的,當然其他環境因素也好考慮在內。
一定要排除開發和部署環境差異引起的問題。

4.如果是突然出現這個問題,最好是復原到之前的操作,重做這個操作,例如移除控制項,再次添加;
反註冊Com,重新註冊; 如果你安裝了其他外掛程式,卸載這些外掛程式再試一試。

5.程式本身的問題。例如:資料庫訪問達到最大的並發量,出現死結。或頻繁的寫入和讀取操作,c#的記憶體回收機製造成的,即變數的回收速度大於使 用的速度造成的,這樣就需要從新設計演算法。

態度決定一切,技術改變生活

作者:winzheng                                                                                                                                            
出處:http://cnblogs.com/winzheng                                                                                                      
本文為原創作品,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利。

 

更多參考 http://msdn.microsoft.com/zh-cn/library/ms164911%28VS.80%29.aspx

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.