莫名其妙运行成功
本文适用于操作系统实验报告
// GetMemoryStatus.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <Windows.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
void GetMemSta(void);
// The one and only application object
using namespace std;
int main(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
LPVOID BaseAddr;
char *str;
GetMemSta();
printf("Now Allocate 32M Virtual Memory and 2M Physical Memory\n\n");
BaseAddr=VirtualAlloc(NULL,1024*1024*32,MEM_COMMIT,PAGE_READWRITE);
if(BaseAddr == NULL)
printf("Virtual Allocate Fail\n");
str=(char*)malloc(1024*1024*2);
GetMemSta();
printf("Now Release 32M Virtual Memory and 2M Physical Memory\n\n");
if(VirtualFree(BaseAddr,0,MEM_RELEASE)==0)
printf("Release Allocation Fail\n");
free(str);
GetMemSta();
return nRetCode;
}
void GetMemSta(void)
{
MEMORYSTATUS MemInfo;
GlobalMemoryStatus(&MemInfo);
printf("Current Memory Status is:\n");
printf("\t Total Phycial Memory is %dMB\n",MemInfo.dwTotalPhys/(1024*1024));
printf("\t Available Physical Memory is %dMB\n",MemInfo.dwAvailPhys/(1024*1024));
printf("\t Total Page File is %dMB\n",MemInfo.dwTotalPageFile/(1024*1024));
printf("\t Available Page File is %dMB\n",MemInfo.dwAvailPageFile/(1024*1024));
printf("\t Total Virtual Memory is %dMB\n",MemInfo.dwTotalVirtual/(1024*1024));
printf("\t Available Virtual Memory is %dMB\n",MemInfo.dwAvailVirtual/(1024*1024));
printf("\t Memory Load is %d%%\n\n",MemInfo.dwMemoryLoad);
}