首页 > 其他 > 详细

【内存】的获取个人小结

时间:2014-12-08 17:48:28      阅读:247      评论:0      收藏:0      [点我收藏+]

本文为个人使用后的一些总结,逐步完善中...

1、获得全局内存

对应函数:void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer); 【总内存2G以内使用】

API:

typedef struct _MEMORYSTATUS
{  
	DWORD dwLength;			//本结构的长度;
	DWORD dwMemoryLoad;     //已用内存的百分比;
	SIZE_T dwTotalPhys;		//物理内存总量;
	SIZE_T dwAvailPhys;		//可用物理内存;
	SIZE_T dwTotalPageFile; //交换文件总的大小;
	SIZE_T dwAvailPageFile; //交换文件中空闲部分大小; 
	SIZE_T dwTotalVirtual;  //用户可用的地址空间;
	SIZE_T dwAvailVirtual;  //当前空闲的地址空间;
} MEMORYSTATUS, *LPMEMORYSTATUS;

使用实例:

void CGetMemory_1Dlg::OnBnClickedButton1()
{
	MEMORYSTATUS lpBuffer;
	lpBuffer.dwLength = sizeof(MEMORYSTATUS);
	GlobalMemoryStatus(&lpBuffer);
}


【总内存2G~4G的建议使用扩展函数】GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer)

API:

typedef struct _MEMORYSTATUSEX {
    DWORD dwLength;
    DWORD dwMemoryLoad;
    DWORDLONG ullTotalPhys;
    DWORDLONG ullAvailPhys;
    DWORDLONG ullTotalPageFile;
    DWORDLONG ullAvailPageFile;
    DWORDLONG ullTotalVirtual;
    DWORDLONG ullAvailVirtual;
    DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
使用实例:

void CGetMemory_1Dlg::OnBnClickedButton1()
{
	MEMORYSTATUSEX lpBuffer;
	lpBuffer.dwLength = sizeof(MEMORYSTATUSEX);
	GlobalMemoryStatusEx(&lpBuffer);
}

2、获得取得某一进程内存

call:

BOOL GetProcessMemoryInfo(
  HANDLE Process,
  PPROCESS_MEMORY_COUNTERS ppsmemCounters,
  DWORD cb
);

API:

typedef struct _PROCESS_MEMORY_COUNTERS 
{  
	DWORD cb;  
	DWORD PageFaultCount;  
	SIZE_T PeakWorkingSetSize;  
	SIZE_T WorkingSetSize;  
	SIZE_T QuotaPeakPagedPoolUsage;  
	SIZE_T QuotaPagedPoolUsage;  
	SIZE_T QuotaPeakNonPagedPoolUsage;  
	SIZE_T QuotaNonPagedPoolUsage;  
	SIZE_T PagefileUsage;  
	SIZE_T PeakPagefileUsage;
} PROCESS_MEMORY_COUNTERS, *PPROCESS_MEMORY_COUNTERS;




【内存】的获取个人小结

原文:http://blog.csdn.net/u012370255/article/details/41804857

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!