私有内存申请和释放

it2023-03-15  90

私有内存:独占物理页 共享内存:和别人共享物理页

#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 ; }
最新回复(0)