实时检测你的内存

     以前总以为windows内存很神秘,可是了解了一些API后,神马都是浮云。微软用页式虚拟存储技术对内存进行管理,利用页面文件(也叫交换文件)来实现物理内存的扩展。所谓页面文件,通俗地说,就是我们设置的虚拟内存--右键点击“我的电脑”,打开“属性”...

     我们用VOID GlobalMemoryStatus ( LPMEMORYSTATUS lpBuffer )来实现内存的检测。当然也可以用别的API,正如有的房子有好几个门,哪个门都能进去...不过这个API比较直观,里面的Memory,你懂的...

     上面这个API函数只有一个参数,参数是一个指向名为MEMORYSTATUS的结构的指针。结构定义:

  typedef struct _MEMORYSTATUS {   DWORD dwLength; // 本结构的长度

  DWORD dwMemoryLoad; // 已用内存的百分比

  DWORD dwTotalPhys; // 物理内存总量

  DWORD dwAvailPhys; // 可用物理内存

  DWORD dwTotalPageFile; // 交换文件总的大小

  DWORD dwAvailPageFile; // 交换文件中空闲部分大小

  DWORD dwTotalVirtual; // 用户总的虚拟地址空间

  DWORD dwAvailVirtual; // 当前空闲的虚拟地址空间

  

 

  } MEMORYSTATUS, *LPMEMORYSTATUS;

     有了这个API,先说明一个MEMORYSTATUS的结构,再使用这个API,就可以检测内存了。但每检测一次,都要运行一次这个检测文件,不方便。循环语句要派上用场了(下面的例程大约10秒检测一次)。

      以下例程VC6.0下通过。

 

#include<windows.h>
#include<stdio.h>
#define DIV 1024
void main(int argc, char *argv[])
{ MEMORYSTATUS memory;
 while(1){
memory.dwLength=sizeof(memory);
GlobalMemoryStatus(&memory);
printf ("总共有物理内存 %ldk/n",
         memory.dwTotalPhys/DIV);
printf("物理内存使用百分之%ld/n",memory.dwMemoryLoad);
printf ("你设置的虚拟内存总共有 %ldk/n",
         memory.dwTotalPageFile/DIV);
printf("虚拟内存剩下%ldk/n/n",memory.dwAvailPageFile/DIV);
Sleep(10000);
}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值