私有内存的申请与释放

1.私有内存指的是物理页自己用,无法共享

2.同样一块内存被多个进程共享时,则为共享内存Map

  


一、申请内存的两种方式:

  1. 通过VirtualAlloc/VirtualAllocEx申请的:Private Memory  //底层的实现完全一样
  2. 通过CreateFileMapping映射的:Mapped Memory

 

二、内存的申请与释放:

LPVOID VirtualAlloc{ LPVOID lpAddress, // 要分配的内存区域的地址 DWORD dwSize, // 分配的大小 DWORD flAllocationType, // 分配的类型 DWORD flProtect // 该内存的初始保护属性 };   BOOL VirtualFree( LPVOID lpAddress, // 区域地址 SIZE_T dwSize, // 区域大小,字节 DWORD dwFreeType // 类型);
// 私有内存申请.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <windows.h>

int main()
{
    LPVOID P = VirtualAlloc(
        NULL, // 要分配的内存区域的地址
        0x1000 * 2, // 分配的大小
        MEM_COMMIT, // 分配的类型 MEM_COMMIT占住并分配物理页
        PAGE_READWRITE // 该内存的初始保护属性  可读可写
    );
    //释放申请的内存
    VirtualFree(P, 0x1000 * 2, MEM_DECOMMIT);
    //VirtualFree(P, 0, MEM_RELEASE);//彻底释放
}

new的本质就是malloc;但是他们不是真正申请内存,只是从已有内存中,再申请一小块自己用(堆内存)

//malloc -》 HeapAlloc -》 没有进内核

 

 

上一篇:试编制一个程序,把Ax中的16进制数转换为ASCII码,并将对应的ASCII码依次存放到MEM数组中的四个字节中


下一篇:202. 快乐数