エピソード
アクセス違反のC0000005 - 読み取りまたは書き込み
読み取りまたは書き込みアクセス違反は、アプリケーションが無効なメモリ アドレスからメモリを読み取りまたは書き込もうとしたときに発生します。 有効にするには、メモリ ページに有効な状態、保護、および型が必要です。
メモリはMEM_COMMIT 状態である必要があります。
メモリは任意 の型にすることができます。MEM_IMAGE、MEM_MAPPED、またはMEM_PRIVATE。
読み取り操作の場合、メモリの保護は、PAGE_READONLY、PAGE_READWRITE、PAGE_WRITECOPY、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE、またはPAGE_EXECUTE_WRITECOPYである必要があります。
書き込み操作の場合、メモリの保護は、PAGE_READWRITE、PAGE_WRITECOPY、PAGE_EXECUTE_READWRITE、またはPAGE_EXECUTE_WRITECOPYである必要があります。
アドレスの状態、保護、および種類を表示するには、!address <address を使用します>
- 必ず現在の値を参照してください。割り当て値ではありません
- 各メモリ ページ領域 (最小 4K) は、VirtualProtect 関数ファミリによって設定された、割り当て時の初期保護値と現在の保護値の両方を追跡します。
メモリ アドレスは、次の一般的なシナリオのいずれかが原因で無効である可能性があります。
- NULL ポインター - 0x0と0x10000 (64K) の間のアドレス (通常は NULL (0x0) を返すポインターを返す関数など)、ポインターは検証なしでアクセスされました
- メモリ破損 - アドレスが誤ってまたは悪意を持って上書きされた - 一般的にバッファー オーバーラン (またはアンダーラン) を介して
- Use-After-Free - アドレス は有効でしたが 、解放された後にアクセスされています (データ)
- ビット フリップ - 1 つ以上のビットが反転している RAM (ハードウェア) の問題 (まれ)
その他のリソース:
読み取りまたは書き込みアクセス違反は、アプリケーションが無効なメモリ アドレスからメモリを読み取りまたは書き込もうとしたときに発生します。 有効にするには、メモリ ページに有効な状態、保護、および型が必要です。
メモリはMEM_COMMIT 状態である必要があります。
メモリは任意 の型にすることができます。MEM_IMAGE、MEM_MAPPED、またはMEM_PRIVATE。
読み取り操作の場合、メモリの保護は、PAGE_READONLY、PAGE_READWRITE、PAGE_WRITECOPY、PAGE_EXECUTE_READ、PAGE_EXECUTE_READWRITE、またはPAGE_EXECUTE_WRITECOPYである必要があります。
書き込み操作の場合、メモリの保護は、PAGE_READWRITE、PAGE_WRITECOPY、PAGE_EXECUTE_READWRITE、またはPAGE_EXECUTE_WRITECOPYである必要があります。
アドレスの状態、保護、および種類を表示するには、!address <address を使用します>
- 必ず現在の値を参照してください。割り当て値ではありません
- 各メモリ ページ領域 (最小 4K) は、VirtualProtect 関数ファミリによって設定された、割り当て時の初期保護値と現在の保護値の両方を追跡します。
メモリ アドレスは、次の一般的なシナリオのいずれかが原因で無効である可能性があります。
- NULL ポインター - 0x0と0x10000 (64K) の間のアドレス (通常は NULL (0x0) を返すポインターを返す関数など)、ポインターは検証なしでアクセスされました
- メモリ破損 - アドレスが誤ってまたは悪意を持って上書きされた - 一般的にバッファー オーバーラン (またはアンダーラン) を介して
- Use-After-Free - アドレス は有効でしたが 、解放された後にアクセスされています (データ)
- ビット フリップ - 1 つ以上のビットが反転している RAM (ハードウェア) の問題 (まれ)
その他のリソース:
ご意見およびご提案がある場合は、 こちらから問題を送信してください。