社区
C++ 语言
帖子详情
为什么总是在MEM_FREE状态 在线等待,立即给分
jardyson
2008-10-14 05:14:42
通过VirtualQueryEx取得用户区页面,但该区域页面状态有时全部都是释放状态,不解?这样子程序能正常运行吗?而且此时我如何查询内存数据?
...全文
266
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
计算
aarch32 linux 4.14 busybox-1.30 经常使用
free
查看
mem
信息类似如下打印
free
49 total used
free
shared buffers cached
Mem
: 239 189 49 0 0 65 -/+ buffers/cache: 124 115...
linux内存
mem
和swap,Linux内存
mem
和 swap
摘抄并用于自查Linux
mem
/swap/buffers/cached区别
free
命令相对于top,提供了更简洁的查看系统内存使用情况:#
free
-m
mem
:表示物理内存统计buff/cache:表示物理内存的缓存统计swap:表示硬盘上交换
分
区的使用情况系统当前真正可用的内存并不是第一行
free
标记的,他仅代表未被
分
配的内存 buff/cache列占用过高buff/cache主要干啥来...
Linux中的
free
命令
在Linux中,我们经常用
free
命令来查看系统内存的使用
状态
。 一、命令
free
-h 二、
分
析
free
命令的返回结果有三行:
Mem
、-/+buffers/cache、Swap,下面逐一了解。 1、
Mem
行 各列含义如下: 列名 含义 total 内存总量 used 使用内存
free
可用内存 shared 共享内存 buffers buffer缓存,可...
通过
free
命令了解Linux系统内存
状态
free
是系统中空闲的内存大小,buff/cache虽然是在需要的时候可以回收的,但是当前也是被利用
状态
,available统计的是应用程序可用内存空间,buff/cache是可回收,可被应用程序使用的。考虑内存写文件到硬盘的过程,内存和磁盘的IO差距很大,如果内存要
等待
数据写完之后才继续后面的操作,会影响程序的运行速度,也会降低系统的相应。为了提高效率,linux 会把读进来的文件在内存中缓存下来,供程序接下来使用,即使程序结束,cache 也不会被自动释放,系统会根据换出算法把cache缓存置换出去。.
free
:显示系统内存
状态
信息
free
:显示系统内存
状态
信息 Usage:
free
[options] Options: -b, --bytes show output in bytes -k, --kilo show output in kilobytes -m, --mega show output in megabytes -g, --giga ...
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章