windows内存管理

zhugeshi 发布于 2025-03-25 104 次阅读


1.(x86)每个进程都有4GB的虚拟内存

2.(x86)中物理内存以4KB的大小进行分页管理


(X86)

低2GB称为用户空间

高2GB称为内核空间


0X00000000----0X0000FFFF 空指针赋值区

0X00010000----0X7FFEFFFF 用户模式区

0X7FFF0000----0X7FFFFFFF 64KB禁入区

0X80000000----0XFFFFFFFF 内核

3.私有内存的申请和释放

物理页分为:
1.私有 进程独占
2.映射 多进程共享
1)申请内存的两种方式
1.通过VirtualAlloc() / VirtualAllocEx() 函数申请私有的
2.通过CreateFileMapping() 函数申请映射的
LPVOID p=VirtualAlloc(
LPVOID ipAddress, //要分配的内存区域的地址
DWORD dwSize, //分配的大小
DWORD flAllocationType, //分配的类型 MEM_COMMIT MEM_RESERVE
DWORD flProtect //该内存的初始保护属性
)
(2)释放内存
VirtualFree(
p,
DWORD dwSize,
类型参数
)

4.共享内存的申请和释放

HANDLE g_hMapFile=CreateFileMapping(
INVALID_HANDLE_VALUE,
NULL,
PAGE_READWRITE,
0,
sizeof(int),
NULL);
超级大菜鸡!!!
最后更新于 2025-03-31