關於Windows虛擬記憶體的使用簡要demo
阿新 • • 發佈:2021-01-07
技術標籤:windows SDKC/C++
內容摘自:
使用windows記憶體-VirtualAlloc
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<windows.h>
#include<conio.h>
using namespace std;
void MemoryStatus()
{
MEMORYSTATUS memStatus;
GlobalMemoryStatus(&memStatus);
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;
}
int main(int argc, char*argv[])
{
cout << "初始狀態:" << endl;
MemoryStatus();
//申請記憶體 保留1G的空間
char* lpv = (char*)VirtualAlloc(NULL, 1024 * 1024 * 1024, MEM_RESERVE, PAGE_READWRITE);
if (lpv == NULL)
{
cout << "沒有那麼多虛擬空間!" << endl;
return -1;
}
cout << "\n\n申請記憶體後:" << endl;
MemoryStatus(); // 可用程序空間減少1GB
//提交記憶體
lpv = (char*)VirtualAlloc(lpv, 1024 * 1024 * 1024, MEM_COMMIT, PAGE_READWRITE);
if (lpv == NULL)
{
cout << "沒有那麼多物理空間!" << endl;
return -1;
}
cout << "\n\n提交記憶體後:" << endl;
MemoryStatus();
//使用記憶體
strcpy(lpv, "abc");
cout << "\n\n使用記憶體後:" << endl;
MemoryStatus();
//釋放記憶體
VirtualFree(lpv, 1024 * 1024 * 1024, MEM_RELEASE);
system("pause");
return 0;
}
vs2013 win32環境執行