1. 程式人生 > 其它 >關於Windows虛擬記憶體的使用簡要demo

關於Windows虛擬記憶體的使用簡要demo

技術標籤: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環境執行

執行結果