一. 虚拟内存
n api详解: 分配:
n VirtualAlloc
n VirtualAllocEx
n VirtualAllocExNuma
n 释放
n VirtualFree
n VirtualFreeEx
实际上就是动态内存分配, 和c语言的malloc不同, 分配后数据清0,释放后数据清空成?
分配,调拨,释放: char* start =(char*) VirtualAlloc(NULL, 1024 * 1024, MEM_RESERVE| MEM_COMMIT, PAGE_READWRITE);
start[4] = 'a';
VirtualFree(start, 0, MEM_RELEASE);
n 锁定/解锁
n VirtualLock
n VirtualUnlock
n 保护
n VirtualProtect
n VirtualProtectEx
n 状态查询
n VirtualQuery
n VirtualQueryEx
内存状态: GlobalMemoryStatus(&ms); ms是MEMORYSTATUS结构
地址空间状态:
二. 内存映射文件
1.创建:
CreateFileMapping(file, NULL, PAGE_EXECUTE_WRITECOPY, 0, 200, NULL)文件句柄, 安全属性, 访问方式, 高32bit为0,低32bit大小, 内核文件名
2.映射:
MapViewOfFile(filemap, FILE_MAP_COPY, 0, 0, 0);返回pbyte
3.取消映射:
UnmapViewOfFile(pb);
三. 堆
获取进程默认堆句柄: GetProcessHeap() 返回句柄
v 创建和销毁堆:
n 创建:
n HANDLE WINAPI HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize);
n 销毁:
n BOOL WINAPI HeapDestroy(HANDLE hHeap);
v 分配和释放内存:
n 分配:
n LPVOID WINAPI HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes);
n 重分配:
n LPVOID WINAPI HeapReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem,SIZE_T dwBytes);
n 释放:
n BOOL WINAPI HeapFree(HANDLE hHeap,DWORD dwFlags, LPVOID lpMem);
v 诊断和调试支持:
n 内存大小:
n SIZE_T WINAPI HeapSize(HANDLE hHeap,DWORD dwFlags, LPCVOID lpMem);
n 有效性:
n BOOL WINAPI HeapValidate(HANDLE hHeap,DWORD dwFlags, LPCVOID lpMem);
n 遍历堆:
n BOOL WINAPI HeapWalk(HANDLE hHeap,LPPROCESS_HEAP_ENTRY lpEntry);
n 设置信息:
n BOOL WINAPI HeapSetInformation(HANDLE HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength);
n 查询信息:
n BOOL WINAPI HeapQueryInformation(HANDLE HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation, SIZE_T HeapInformationLength,PSIZE_T ReturnLength);
二. 虚拟内存 api详解: 分配: VirtualAlloc VirtualAllocEx VirtualAllocExNuma 释放 VirtualFree VirtualFreeEx 实际上就是动态内存分配, 和c语言的malloc不同, 分配后数据清0,释放后数据清空成? 分配,调拨,释放: char* start =(char*) VirtualAlloc(NULL, 1024 * 1024, MEM_RESERVE| MEM_COMMIT, PAGE_READWRITE); start[4] = 'a'; VirtualFree(start, 0, MEM_RELEASE); 锁定/解锁 VirtualLock VirtualUnlock 保护 VirtualProtect VirtualProtectEx 状态查询 VirtualQuery VirtualQueryEx 内存状态: GlobalMemoryStatus(&ms); ms是MEMORYSTATUS结构 地址空间状态: 三. 内存映射文件 1. 创建: CreateFileMapping(file, NULL, PAGE_EXECUTE_WRITECOPY, 0, 200, NULL)文件句柄, 安全属性, 访问方式, 高32bit为0,低32bit大小, 内核文件名 2. 映射: MapViewOfFile(filemap, FILE_MAP_COPY, 0, 0, 0);返回pbyte 3. 取消映射: UnmapViewOfFile(pb); 四. 堆 获取进程默认堆句柄: GetProcessHeap() 返回句柄 创建和销毁堆: 创建: HANDLE WINAPI HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize); 销毁: BOOL WINAPI HeapDestroy(HANDLE hHeap); 分配和释放内存: 分配: LPVOID WINAPI HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes); 重分配: LPVOID WINAPI HeapReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem,SIZE_T dwBytes); 释放: BOOL WINAPI HeapFree(HANDLE hHeap,DWORD dwFlags, LPVOID lpMem); 诊断和调试支持: 内存大小: SIZE_T WINAPI HeapSize(HANDLE hHeap,DWORD dwFlags, LPCVOID lpMem); 有效性: BOOL WINAPI HeapValidate(HANDLE hHeap,DWORD dwFlags, LPCVOID lpMem); 遍历堆: BOOL WINAPI HeapWalk(HANDLE hHeap,LPPROCESS_HEAP_ENTRY lpEntry); 设置信息: BOOL WINAPI HeapSetInformation(HANDLE HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength); 查询信息: BOOL WINAPI HeapQueryInformation(HANDLE HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation, SIZE_T HeapInformationLength,PSIZE_T ReturnLength);