社区
C++ 语言
帖子详情
为什么总是在MEM_FREE状态 在线等待,立即给分
jardyson
2008-10-14 05:14:42
通过VirtualQueryEx取得用户区页面,但该区域页面状态有时全部都是释放状态,不解?这样子程序能正常运行吗?而且此时我如何查询内存数据?
...全文
267
5
打赏
收藏
为什么总是在MEM_FREE状态 在线等待,立即给分
通过VirtualQueryEx取得用户区页面,但该区域页面状态有时全部都是释放状态,不解?这样子程序能正常运行吗?而且此时我如何查询内存数据?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
baihacker
2008-10-15
打赏
举报
回复
MEM_FREE
0x10000
Indicates free pages not accessible to the calling process and available to be allocated. For free pages, the information in the AllocationBase, AllocationProtect, Protect, and Type members is undefined.
frank_ll
2008-10-14
打赏
举报
回复
看不懂
帮顶
jardyson
2008-10-14
打赏
举报
回复
没人了吗,顶上去
jardyson
2008-10-14
打赏
举报
回复
但我这个就觉得奇怪,我查询过QQ,还有很多进程,直接空着跑出来.以下是我的C#代码
int sLen = VirtualQueryEx(proceID, ref baseAddr, ref mbi, mbiLen);
while (sLen == mbiLen && baseAddr <= maxAddr)
{
switch (mbi.State)
{
case MEM_COMMIT:
OldFlg = mbi.Protect;
if (mbi.Protect == PAGE_NOACCESS || mbi.Protect == PAGE_GUARD)
{
VirtualProtectEx(proceID, ref baseAddr, mbi.RegionSize, PAGE_EXECUTE_READWRITE, ref OldFlg);
}
ReadProcessMemory(proceID, int.Parse(baseAddr.ToString()), lpBuff, 2, lpWritenn);
if (mbi.Protect == PAGE_NOACCESS || mbi.Protect == PAGE_GUARD)
{
VirtualProtectEx(proceID, ref baseAddr, mbi.RegionSize, OldFlg, ref OldFlg);
}
if (this.coniValue.ToString() == lpBuff[0].ToString())
{
clsM.AddC(MEM_COMMIT);
}
break;
case MEM_FREE:
clsM.AddF(MEM_FREE);
break;
case MEM_RESERVE:
OldFlg = mbi.Protect;
if (mbi.Protect == PAGE_NOACCESS || mbi.Protect == PAGE_GUARD)
{
VirtualProtectEx(proceID, ref baseAddr, mbi.RegionSize, PAGE_EXECUTE_READWRITE, ref OldFlg);
}
VirtualAlloc(ref baseAddr, mbi.RegionSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
ReadProcessMemory(proceID, int.Parse(baseAddr.ToString()), lpBuff, 2, lpWritenn);
if (this.coniValue.ToString() == lpBuff[0].ToString())
{
clsM.AddR(MEM_RESERVE);
}
if (mbi.Protect == PAGE_NOACCESS || mbi.Protect == PAGE_GUARD)
{
VirtualProtectEx(proceID, ref baseAddr, mbi.RegionSize, OldFlg, ref OldFlg);
}
break;
case MEM_PRIVATE:
OldFlg = mbi.Protect;
if (mbi.Protect == PAGE_READWRITE)
{
ReadProcessMemory(proceID, int.Parse(baseAddr.ToString()), lpBuff, 2, lpWritenn);
if (this.coniValue.ToString() == lpBuff[0].ToString())
{
clsM.AddR(MEM_RESERVE);
}
}
break;
}
baseAddr = baseAddr + mbi.RegionSize;
sLen = VirtualQueryEx(proceID, ref baseAddr, ref mbi, mbiLen);
}
我用CE查询过微软自带的小游戏,数据可以立马显示出来,但我怎么查都是空,奇怪...
过去的我
2008-10-14
打赏
举报
回复
一般不可能全部是free的。。总要泱射点东西
linux procps
free
mem
计算与oom
free
mem
计算
本文详细介绍了BusyBox环境下Linux系统的内存管理方式,包括
free
命令的工作原理及其与OOM处理中的内存
状态
展示之间的联系。通过对内核sysinfo接口及关键内存
状态
变量的解析,揭示了系统如何监控和报告内存使用情况。
linux内存
mem
和swap,Linux内存
mem
和 swap
本文深入解析了Linux系统中
mem
、swap、buffers与cached的区别及作用。通过
free
命令展示了内存使用情况,介绍了Linux缓存机制如何提升读写效率,并探讨了在物理内存不足时swap区的作用及其与
mem
区的关系。
Linux中的
free
命令
本文深入解析Linux系统的内存管理机制,包括使用
free
命令查看内存
状态
的方法,详细解释了
Mem
、-/+buffers/cache和Swap行的含义及其计算关系。此外,还介绍了如何通过sync命令和修改/proc/sys/vm/drop_caches文件来释放缓存,以优化系统性能。
通过
free
命令了解Linux系统内存
状态
本文介绍了如何使用
free
命令查看Linux系统内存
状态
,包括物理内存、swap交换
分
区、共享内存及系统缓存的使用情况,并深入探讨了buff/cache机制及其对文件读写速率的影响。
free
:显示系统内存
状态
信息
本文详细解析了Linux系统中
free
命令的使用方法,包括显示系统内存
状态
的各种选项,如以不同单位显示内存信息、显示详细的内存统计、重复打印内存
状态
等。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章