劇集
存取違規C0000005
存取違規是應用程式讀取、寫入或執行無效記憶體位址時所造成的例外狀況類型。
例外狀況程式碼0xC0000005
第一個例外狀況參數 (0) 是違規的類型;讀取 (0)、 寫入 (1) 或執行 (8)
第二個例外狀況參數 (1) 是違規位址。
使用適用于 Windows 的 偵錯工具偵錯這些問題時,請遵循下列步驟:
- .exr -1
- 例外狀況程式碼
- Parameter[0] - 讀取 (0), 寫入 (1), 執行 (8)
- Parameter[1] - 位址
- .ecxr
- 在存取違規處註冊值
- 組合器指示
- 讀取 - 查看逗號右邊的運算式
- 寫入 - 查看逗號左邊的運算式
- 執行 - 查看運算式的位址
- k
- 檢視存取違規的呼叫堆疊
記憶體位址可能無效,因為下列其中一個常見案例:
- Null 指標 - 0x0與0x10000 (64K) 之間的位址 - 例如通常傳回 Null (0x0) 指標的函式,且指標未經驗證即可存取
- 記憶體損毀 - 位址錯誤或惡意覆寫 - 通常透過緩衝區滿溢 (或不足)
- Use-After-Free - 位址 有效 ,但在釋放位址(資料)或卸載後即會存取位址(程式碼)
- 位翻轉 - RAM(硬體)問題,其中一或多個位已經翻轉(罕見)
如需 讀取或 寫入 問題,請參閱 讀取 或寫入 情節。
針對 執行 問題,請參閱 Execute 情節。
請注意,當地址介於 0x0 和 0x10000 之間時,具有 的 CLR 應用程式會擲回 System.NullReferenceException 例外狀況,而不是存取違規例外狀況。
其他資源:
存取違規是應用程式讀取、寫入或執行無效記憶體位址時所造成的例外狀況類型。
例外狀況程式碼0xC0000005
第一個例外狀況參數 (0) 是違規的類型;讀取 (0)、 寫入 (1) 或執行 (8)
第二個例外狀況參數 (1) 是違規位址。
使用適用于 Windows 的 偵錯工具偵錯這些問題時,請遵循下列步驟:
- .exr -1
- 例外狀況程式碼
- Parameter[0] - 讀取 (0), 寫入 (1), 執行 (8)
- Parameter[1] - 位址
- .ecxr
- 在存取違規處註冊值
- 組合器指示
- 讀取 - 查看逗號右邊的運算式
- 寫入 - 查看逗號左邊的運算式
- 執行 - 查看運算式的位址
- k
- 檢視存取違規的呼叫堆疊
記憶體位址可能無效,因為下列其中一個常見案例:
- Null 指標 - 0x0與0x10000 (64K) 之間的位址 - 例如通常傳回 Null (0x0) 指標的函式,且指標未經驗證即可存取
- 記憶體損毀 - 位址錯誤或惡意覆寫 - 通常透過緩衝區滿溢 (或不足)
- Use-After-Free - 位址 有效 ,但在釋放位址(資料)或卸載後即會存取位址(程式碼)
- 位翻轉 - RAM(硬體)問題,其中一或多個位已經翻轉(罕見)
如需 讀取或 寫入 問題,請參閱 讀取 或寫入 情節。
針對 執行 問題,請參閱 Execute 情節。
請注意,當地址介於 0x0 和 0x10000 之間時,具有 的 CLR 應用程式會擲回 System.NullReferenceException 例外狀況,而不是存取違規例外狀況。
其他資源: