zoukankan      html  css  js  c++  java
  • 私有内存的申请与释放

    1.私有内存指的是物理页自己用,无法共享

    2.同样一块内存被多个进程共享时,则为共享内存Map

      


    一、申请内存的两种方式:

    1. 通过VirtualAlloc/VirtualAllocEx申请的:Private Memory  //底层的实现完全一样
    2. 通过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 -》 没有进内核

  • 相关阅读:
    [转]C# 文本框只能输入数字
    [转]C# dataGridview 报“索引-1没有值”的解决办法
    配置<authorization>节(配置文件)
    [转]javascript的urlencode
    SSM框架搭建问题
    web server
    mysql 系列
    UI 框架、ORM、权限系统
    一个基于 .NET Core 2.0 开发的简单易用的快速开发框架
    DotNetty 版 mqtt 开源客户端 (MqttFx)
  • 原文地址:https://www.cnblogs.com/hanhandaren/p/11145997.html
Copyright © 2011-2022 走看看