首页
社区
课程
招聘
[求助]请问如何判断一个内存地址是否有效?
发表于: 2007-11-2 21:04 9905

[求助]请问如何判断一个内存地址是否有效?

2007-11-2 21:04
9905
比如判断内存地址0x80000000是否有效,我用下面的方法进行判断
MEMORY_BASIC_INFORMATION mbi;
::VirtualQueryEx(hProcess,lpAddress,&mbi,sizeof(MEMORY_BASIC_INFORMATION));
if(mbi.Protect==PAGE_NOACCESS)
      return FALSE;

得到的结果是内存地址0x80000000有效,而我在OD中用Ctrl+G转到内存地址
0x80000000却提示:指定地址无内存。
请问如何才能判断得到和OD相同的结果?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1505
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
2
当内存的state状态是free或者reserve的时候,Protect成员无效。
2007-11-2 21:17
0
雪    币: 207
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
果然如此,谢了
2007-11-2 21:58
0
雪    币: 299
活跃值: (25)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
4
0x80000000是内核的高2G内存,OD是Ring3的,不能访问吧。
2007-11-3 09:12
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
5
万一打开了 3GB 开关呢?
2007-11-3 19:18
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
6
isBadPointer
2007-11-3 22:48
0
雪    币: 226
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
IsBadReadPtr
2007-11-3 23:45
0
游客
登录 | 注册 方可回帖
返回
//