[點晴永久免費OA]System.AccessViolationException: 嘗試讀取或寫入受保護的內存。這通常指示其他內存已損壞。
當前位置:點晴教程→點晴OA辦公管理信息系統
→『 經驗分享&問題答疑 』
昨天寫的RC4的加解密程序,當C#調用C的dll時就會出現這個提示,嘗試怎么修改都不行。Debug跟蹤顯示,應該返回string類型的函數返回值為空。也不知道怎么調試dll,dll里下的斷點始終提示無效。單獨運行dll里的函數,結果沒有問題。幾乎可以斷定是函數返回的地方出錯了。 終于搞清楚錯誤的真正原因了。詭異的是,這個錯誤是我趴在桌子上半夢半醒的狀態下想到的。更詭異的是,睡醒了之后還記得睡夢中的想法。嘗試修改錯誤,竟然真的就成功了。有點玄...... 這個錯誤其實不應該犯,《C專家編程》和《C陷阱與缺陷》里都提到過,自己也做了這條的筆記。只是之前幾乎一樣的dll調用都做過,也都成功運行得到了正確的結果,就以為dll里不會出什么錯,一直在C#的代碼里找錯。而且同樣的錯誤提示也見過,只是那時是糊里糊涂的把數組賦個初始值就解決了,也就沒太在意。 錯誤提示: 有關調用實時(JIT)調試而不是此對話框的詳細信息, |