[ホーム] -
[Windows 10 FAQ 一覧] - [VCで作成したプログラムがアクセス違反(NTDLL.DLL、0x00000005) でアクセス違反する]
VCで作成したプログラムを実行したところ、以下のaccess violation(アクセス保護違反)を起こし、アプリケーションが異常終了する場合があります。
ハンドルされない例外が 0xxxxxxxxx (ntdll.dll) で発生しました (mofmof.exe 内): 0xC0000005: 場所 0xxxxxxxxx への読み込み中にアクセス違反が発生しました
0xxxxxxxx は環境により値が異なります。毎回異なるアドレスで発生するため、デバッグが困難です。
VCをデバッグモードで起動しても、アクセス違反が発生するのが NTDLL.DLL 内であり原因がはっきりしない場合があります。
この場合は、プログラムの不具合によるヒープの破壊(mallocなど)が考えられますが、今回は該当しませんでした。
またプログラムからCreateThreadをコールすることによりマルチスレッドを実現している場合、スレッドのハンドル処理に誤りがある場合なども各スレッドがNtdll.dll をコールする場合に障害が発生する場合があります。
ただこれも今回は該当しませんでした。
今回の原因は単純でした。
Visual Studio 2013のUpdate 4を使用していましたが、Update 5 を適用後コンパイル、リンクを実行したら改善されました。