07/04/02 22:14:54
IsBadCodePtrなる関数の使い方を確認しようと思い、次のようなコードを書いてみました。
void CMemoryTestDlg::OnBnClickedOk()
{
char* p = new char[10];
delete [] p;
ASSERT(IsBadCodePtr((FARPROC)p) == 0);
}
MSDNによれば、
>呼び出し側プロセスが指定したメモリに対して読み取りアクセスを行える場合は、0 が返ります。
>指定されたメモリに対して読み取りアクセスを行えない場合は、0 以外の値が返ります。
とのことなので、これはASSERTで、思いっきり停止するかと思ったのですが、全く停止しません。
読み込めない場所を判断したくて、IsBadCodePtrを使っているのに、使い方が間違っているのでしょうか……
どなたか教えてください。
環境はWinXPHOME、VS2005 Pro、言語はC++を使っています。