欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[點晴永久免費OA]System.AccessViolationException: 嘗試讀取或寫入受保護的內存。這通常指示其他內存已損壞。

admin
2019年1月12日 17:55 本文熱度 3601

昨天寫的RC4的加解密程序,當C#調用C的dll時就會出現這個提示,嘗試怎么修改都不行。Debug跟蹤顯示,應該返回string類型的函數返回值為空。也不知道怎么調試dll,dll里下的斷點始終提示無效。單獨運行dll里的函數,結果沒有問題。幾乎可以斷定是函數返回的地方出錯了。


終于搞清楚錯誤的真正原因了。詭異的是,這個錯誤是我趴在桌子上半夢半醒的狀態下想到的。更詭異的是,睡醒了之后還記得睡夢中的想法。嘗試修改錯誤,竟然真的就成功了。有點玄......


這個錯誤其實不應該犯,《C專家編程》和《C陷阱與缺陷》里都提到過,自己也做了這條的筆記。只是之前幾乎一樣的dll調用都做過,也都成功運行得到了正確的結果,就以為dll里不會出什么錯,一直在C#的代碼里找錯。而且同樣的錯誤提示也見過,只是那時是糊里糊涂的把數組賦個初始值就解決了,也就沒太在意。



錯誤提示: 

有關調用實時(JIT)調試而不是此對話框的詳細信息,
請參見此消息的結尾。

************** 異常文本 **************
System.AccessViolationException: 嘗試讀取或寫入受保護的內存。這通常指示其他內存已損壞。
   在 RC4_GUI.RC4_form.RC4_decrypt(String strings_hex, Int32 start, Int32 length)
   在 RC4_GUI.RC4_form.decrypt_button1_Click(Object sender, EventArgs e) 位置 F:\Crypt\Modern Cryptology\GUI\RC4_GUI\Form1.cs:行號 136
   在 System.Windows.Forms.Control.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnClick(EventArgs e)
   在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
   在 System.Windows.Forms.Button.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** 已加載的程序集 **************
mscorlib
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.4927 (NetFXspW7.050727-4900)
    基本代碼: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
RC4_GUI
    程序集版本: 1.0.0.0
    Win32 版本: 1.0.0.0
    基本代碼: file:///F:/Crypt/Modern%20Cryptology/GUI/RC4_GUI/bin/Debug/RC4_GUI.exe
----------------------------------------
System.Windows.Forms
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.4927 (NetFXspW7.050727-4900)
    基本代碼: file:///C:/windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.4927 (NetFXspW7.050727-4900)
    基本代碼: file:///C:/windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.4927 (NetFXspW7.050727-4900)
    基本代碼: file:///C:/windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.4927 (NetFXspW7.050727-4900)
    基本代碼: file:///C:/windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
 System.Xml
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.4927 (NetFXspW7.050727-4900)
    基本代碼: file:///C:/windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
mscorlib.resources
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.4927 (NetFXspW7.050727-4900)
    基本代碼: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms.resources
    程序集版本: 2.0.0.0
    Win32 版本: 2.0.50727.4927 (NetFXspW7.050727-4900)
    基本代碼: file:///C:/windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_zh-CHS_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** JIT 調試 **************
要啟用實時(JIT)調試,
該應用程序或計算機的 .config 文件(machine.config)的 system.windows.forms 節中必須設置
jitDebugging 值。
編譯應用程序時還必須啟用
調試。

例如:
<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>


啟用 JIT 調試后,任何無法處理的異常
都將被發送到在此計算機上注冊的 JIT 調試器,
而不是由此對話框處理。

解決方案: 

將dll里函數需要返回的局部變量聲明為static。(就這么簡單。原因就不重復了)


教訓: 

1、不要犯經驗主義的錯誤,有些經驗可能是錯誤的。 

2、發現bug要及時處理,不可為了趕工而忽略。隨機性出現的bug更要注意,因為這類bug更難發現,也就更能解決。


該文章在 2019/1/12 17:55:36 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved