當前位置:編程學習大全網 - 編程語言 - 我寫了壹段R代碼,但是總是出錯。我不知道發生了什麽。

我寫了壹段R代碼,但是總是出錯。我不知道發生了什麽。

壹:先說硬件:

壹般來說,電腦硬件不容易壞。內存問題不太可能(除非妳的內存真的是壹堆雜牌),主要方面是:1。內存壞了(大多是二手內存),2。使用有質量問題的內存,3。插在主板上的內存金手指部分灰塵太多。4。使用不同品牌和容量的內存,導致不兼容。5。超頻導致的散熱問題。可以用軟件MemTest來檢查內存,可以徹底檢查內存的穩定性。

第二,如果沒有,則排除軟件故障。

先說原理:內存中有壹個用來存儲數據的地方叫緩沖區。當程序將數據放入緩沖區時,需要操作系統提供的“函數function”來應用。如果內存分配成功,函數會將新打開的內存區域的地址返回給應用程序,應用程序可以通過這個地址使用這個內存。這就是“動態內存分配”,內存地址也是編程中的“光標”。內存並不總是可用和取之不盡的,有時內存分配會失敗。當分配失敗時,系統函數將返回值0。此時,返回值“0”不再表示新啟用的光標,而是系統發送給應用程序的通知,表示發生了錯誤。作為應用程序,應該在每次內存應用後檢查返回值是否為0。如果是,則說明存在故障,需要采取壹些措施來挽救,增強了程序的“健壯性”。如果應用程序不檢查這個錯誤,它會認為這個值是根據“思維慣性”分配給它的可用遊標,並在後續執行中繼續使用這個內存。真正的0地址存儲區存儲的是計算機系統中最重要的“中斷描述符表”,是絕對不允許應用程序使用的。在壹個沒有保護機制的操作系統中(比如DOS),向這個地址寫數據會導致立即崩潰,而在壹個健壯的操作系統中,比如Windows,這個操作會立即被系統的保護機制捕獲,結果操作系統會強制關閉錯誤的應用程序,防止其錯誤擴大。此時會出現內存無法“讀取”的錯誤,指出引用的內存地址為“0x00000000”。內存分配失敗的原因有很多,比如內存不足,系統函數版本不匹配等。所以這種分配失敗多見於操作系統使用時間較長,安裝了多種應用程序(包括無意中“安裝”的病毒程序),大量更改系統參數和系統文件之後。

在使用動態分配的應用程序中,有時會發生這樣的情況,程序試圖讀寫壹個“應該可用”的內存,但是由於某種原因,預期的可用遊標失敗了。可能是“忘記”向操作系統要求分配,也可能是程序本身在某個時候取消了這個內存,“沒註意”等等。被註銷的內存被系統回收,其訪問權不再屬於應用程序,因此讀寫操作也會觸發系統的保護機制,而試圖“違法”的程序唯壹的最終結果就是被操作終止,收回所有資源。計算機世界的法則還是比人類有效和嚴厲得多!像這樣的情況屬於程序本身的BUG,妳經常可以在壹個特定的操作序列中重現錯誤。無效光標不壹定是0,所以錯誤提示中的內存地址不壹定是“0x00000000”,也可以是其他隨機數。

首先,建議:

1,檢查系統中是否有特洛伊木馬或病毒。這類程序為了控制系統,往往會不負責任地修改系統,導致操作系統異常。平時要加強信息安全意識,千萬不要對來源不明的可執行程序感到好奇。

2、更新操作系統,讓操作系統安裝程序復制正確版本的系統文件,修正系統參數。有時候操作系統本身也有bug,要註意安裝官方發布的升級程序。

3、盡量使用最新的正式版應用,Beta版,試用版都會有bug。

4.刪除並重新創建Winnt\System32\Wbem\Repository文件夾中的文件:右鍵單擊桌面上的“我的電腦”,然後單擊“管理”。在“服務和應用程序”下,單擊“服務”,然後關閉並停止Windows Management Instrumentation服務。刪除Winnt\System32\Wbem\Repository文件夾中的所有文件。(請在刪除之前備份這些文件。)打開服務和應用程序,單擊服務,然後打開並啟動Windows Management Instrumentation服務。當該服務重新啟動時,將根據以下註冊表項中提供的信息重新創建這些文件:HKEY _本地_機器\軟件\ Microsoft \ WBEM \ CIMOM \ autorecovermofs。

  • 上一篇:手機如何自己編程做遊戲
  • 下一篇:大學生應該掌握哪些基本技能?
  • copyright 2024編程學習大全網