1.私有内存指的是物理页自己用,无法共享
2.同样一块内存被多个进程共享时,则为共享内存Map
一、申请内存的两种方式:
- 通过VirtualAlloc/VirtualAllocEx申请的:Private Memory //底层的实现完全一样
- 通过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 -》 没有进内核