07/04/02 22:33:55
>>750
なるほど……IsBadXXX系はこの手の判断には使えないという事でよろしいでしょうか。
とすると、次のようなコードの場合、不正を事前に検出するためにはどうしたらいいのでしょう。
void CMemoryTestDlg::OnBnClickedOk()
{
char* pTest = new char[10];
::strcpy(pTest, "abc");
TRACE(pTest);
delete [] pTest;
if (::IsBadStringPtr(pTest, 4) == 0)
{
TRACE("OK %s\r\n", pTest); // 当たり前だが、ここで落ちる
}
else
{
TRACE("NG\r\n");
}
}
当然、コメント文を書いたところで、落ちてしまいます。
if文の中身を調整して、不正ポインタかどうかを判別したいわけです。
何かいい手段はないものでしょうか……