vs2010 で簡単な win32 コンソール プログラムを作成し、null 逆参照を作成します。
int _tmain(int argc, _TCHAR* argv[])
{
if (*(int*)(NULL) == 5) {
printf("foo");
}
return 0;
}
これをx64
構成で実行すると、デバッガーで「未処理の例外」と有効な呼び出しスタックが発生します。に切り替えるとwin32
、まだ「ハンドルされていない例外」が発生しますが、スタックは無効です。私は以下を取得します:
ntdll.dll!770a15de()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!770a15de()
ntdll.dll!7709014e()
>msvcr100d.dll!_heap_alloc_dbg_impl(...)
ffffffff()
ここで何が起こっているのか、どうすれば修正できるのでしょうか?