zoukankan      html  css  js  c++  java
  • 内存

    一.     虚拟内存

    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);
  • 相关阅读:
    Linux基础:Day05
    Linux基础:Day04
    Linux用户和用户组管理
    Linux基础:Day03
    Linux基础:Day02
    Linux基础:Day01
    Shell:Day10
    shell概述和shell脚本执行方式
    fdisk分区
    文件系统常用命令
  • 原文地址:https://www.cnblogs.com/freesec/p/6516889.html
Copyright © 2011-2022 走看看