私有内存:独占物理页
共享内存:和别人共享物理页
#include "stdafx.h"
int main(int argc , char* arvc[])
{
return ;
}
被占用地址:
LPVOID VirtualAlloc{
LPVOID lpAddress, // 要分配的内存区域的地址
DWORD dwSize, // 分配的大小(物理页的整数倍,10进制4096,16进制1000)
DWORD flAllocationType, // 分配的类型(MEM_RESERVE,占用线形地址,不需要物理内存,MEM_COMMIT,占用线形地址,也需要使用物理页)
DWORD flProtect // 该内存的初始保护属性(读写)
};
#include "stdafx.h"
int main(int argc , char* arvc[])
{
LPVOID p = VirtualAlloc{
NULL,
1000*2,
MEM_COMMIT,
PAGE_READWRITE
};
return ;
}
占用地址:
由图可知,多了一个390-391,两个物理页
释放内存:
VirtualFree(
LPVOID lpAddress, // 区域地址
SIZE_T dwSize, // 区域大小,字节
DWORD dwFreeType // 类型(MEM_DECOMMIT,线形地址保留,不保留物理页,MEM_RELEASE ,线形地址不保留,物理页也不保留, 区域大小要为0)
);
#include "stdafx.h"
int main(int argc , char* arvc[])
{
LPVOID p = VirtualAlloc{
NULL,
1000*2,
MEM_COMMIT,
PAGE_READWRITE
};
VirtualFree(p,0x1000*2,MEM_DECOMMIT);
return ;
}