windows内存管理

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


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