• 内存


    一.     虚拟内存

    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);
  • 相关阅读:
    sizeof in C
    Get WIFI SSID and BSSID
    Swift和C混合Socket编程实现简单的ping命令&主机发现
    The different of bit Compiler
    Get all Ethernet information in Swift
    Get Local IP Address in Swift
    编译Unity3D Mono 加密DLL 填坑记
    spring-quartz 项目启动后执行一次job 之后按照规定时间执行job
    通过反射获取SSM的controller层的注解以及注解中的value值
    网页中高亮选中的关键字
  • 原文地址:https://www.cnblogs.com/freesec/p/6516889.html
Copyright © 2020-2023  润新知