内存

一.     虚拟内存

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); msMEMORYSTATUS结构

地址空间状态:

 

 

二.     内存映射文件

1.创建:

  CreateFileMapping(file, NULL, PAGE_EXECUTE_WRITECOPY, 0, 200, NULL)文件句柄, 安全属性, 访问方式, 32bit0,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);
原文地址:https://www.cnblogs.com/freesec/p/6516889.html