全面介绍Windows内存管理机制及C++内存分配实例(二):内存状态查询

本文背景:

在编程中,很多WindowsC++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。

本文目的:

Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。

本文内容:

本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及C++内存分配实例(一)(三)(四)(五)和(六)。

2.      内存状态查询函数

2.1系统信息

Windows 提供API可以查询系统内存的一些属性,有时候我们需要获取一些页面大小、分配粒度等属性,在分配内存时用的上。

请看以下C++程序:

SYSTEM_INFO sysInfo;

            GetSystemInfo(&sysInfo);

            cout<<"机器属性:"<<endl;

            cout<<"页大小="<<sysInfo.dwPageSize<<endl;

            cout<<"分配粒度="<<sysInfo.dwAllocationGranularity<<endl;

            cout<<"用户区最小值="<<sysInfo.lpMinimumApplicationAddress<<endl;

   cout<<"用户区最大值="

<<sysInfo.lpMaximumApplicationAddress<<endl<<endl;

结果如下:

 

可以看出,页面大小是4K,区域分配粒度是64K,进程用户区是0x0001 0000~0x7FFE FFFF

 

2.2内存状态

·        内存状态可以获取总内存和可用内存,包括页文件和物理内存。

请看以下C++程序:

MEMORYSTATUS memStatus;

            GlobalMemoryStatus(&memStatus);

            cout<<"内存初始状态:"<<endl;

            cout<<"内存繁忙程度="<<memStatus.dwMemoryLoad<<endl;

            cout<<"总物理内存="<<memStatus.dwTotalPhys<<endl;

            cout<<"可用物理内存="<<memStatus.dwAvailPhys<<endl;

            cout<<"总页文件="<<memStatus.dwTotalPageFile<<endl;

            cout<<"可用页文件="<<memStatus.dwAvailPageFile<<endl;

            cout<<"总进程空间="<<memStatus.dwTotalVirtual<<endl;

   cout<<"可用进程空间="<<memStatus.dwAvailVirtual<<endl<<endl;

结果如下:

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值