windows学习笔记之探索虚拟内存

本文介绍了如何在Windows系统中获取和查看虚拟内存信息,包括通过GetSystemInfo获取页面大小和分配粒度,使用GlobalMemoryStatus和GlobalMemoryStatusEx检查内存状态,以及利用VirtualQuery确定地址空间状态。详细展示了各种函数的输出结果,如内存分配、可用空间及页面状态等。
摘要由CSDN通过智能技术生成

一、  获取系统信息

我们可以调用系统信息获取函数来获得本系统的页面大小、分配粒度的大小等信息。

系统信息获取函数:

VOID GetSystemInfo(LPSYSTEM_INFO psinf);

参数类型:

LPSYSTEM_INFO psinf 用于返回系统信息的数据结构

所包含信息:

dwPageSize:CPU页面的大小

lpMinimumApplicationAddress:进程可用的地址空间中的最小地址

lpMaximumApplicationAddress:进程可用的地址空间中的最大地址

dwAllocationGranularity:保留的地址空间区域的分配粒度

dwNumberOfProcessors:计算机中CPU的数目

dwActiveProcessorMask:用于指明那个CPU是活动的

wProcessorArchitecture:处理器结构

wProcessorLevel:更详细的处理器结构

wProcessorRevision:更详细的处理机级别

验证程序:

#include <iostream>
 
#include <windows.h>
 
using namespace std;
 
 
 
void main()
 
{
 
     /*获取进程信息*/
 
     LPSYSTEM_INFO systemInfo = new SYSTEM_INFO();
 
     GetSystemInfo(systemInfo);
 
     cout << "Page Size :" << systemInfo->dwPageSize << endl;
 
     cout << "Allocation Granularity : " << systemInfo->dwAllocationGranularity << endl;
 
     cout << "Minimum application address : " << systemInfo->lpMinimumApplicationAddress << endl;
 
     cout << "Maxmum application address : " << systemInfo->lpMaximumApplicationAddress << endl;
 
     cout << "Number of processors : " << systemInfo->dwNumberOfProcessors << endl;
 
     cout << "Active processor mask : " << systemInfo->dwActiveProcessorMask << endl;
 
     cout << "Processor architecture : " << systemInfo->wProcessorArchitecture << endl;
 
     cout << "Processor level : " << systemInfo->wProcessorLevel << endl;
 
     cout << "Processor revision : " << systemInfo->wProcessorRevision << endl;
 
     cout << endl;
 
 
 
     system("pause");
 
}

输出结果:

Page Size :4096

Allocation Granularity : 65536

Minimum application address : 00010000

Maxmum application address : 7FFEFFFF

Number of processors : 2

Active processor mask : 3

Processor architecture : 0

Processor level : 6

Processor revision : 3846

二、  查看虚拟内存状态

我们可以通过相关函数检索当前内存状态的动态信息。

获取函数:

         GlobalMemoryStatus(LPMEMORYSTATUS pmst);       /*内存小于4G*/

     GlobalMemoryStatusEx(LPMEMORYSTATUSEX pmst);   /*内存大于4G或合计交换文件大小大于4G*/

函数参数:

     LPMEMORYSTATUS pmst:用于返回信息的数据结构

LPMEMORYSTATUSEX pmst:用于返回信息的数据结构

包含信息:

     dwLength:参数结构体的字节数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值