首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么在C++里实现MFC里的AfxIsValidAddress功能

2012-03-08 
如何在C++里实现MFC里的AfxIsValidAddress功能用NULL判断不准确,出现野地址的时候1样crash.求救![解决办法

如何在C++里实现MFC里的AfxIsValidAddress功能
用NULL判断不准确,出现野地址的时候1样crash.

求救!

[解决办法]
不是要底层实现的话,有几个 WIN32 API 可以利用:

IsBadReadPtr
IsBadWritePtr
IsBadCodePtr
IsBadStringPtr

此外,也可以用 VirtualQuery 监测虚地址是否已提交

[解决办法]
MFC的实现
BOOL AFXAPI AfxIsValidAddress(const void* lp, UINT nBytes,
BOOL bReadWrite /* = TRUE */)
{
// simple version using Win-32 APIs for pointer validation.
return (lp != NULL && !IsBadReadPtr(lp, nBytes) &&
(!bReadWrite || !IsBadWritePtr((LPVOID)lp, nBytes)));
}

热点排行