私有内存的申请与释放

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 -》 没有进内核

原文地址:https://www.cnblogs.com/hanhandaren/p/11145997.html

时间: 2024-10-27 07:19:32

私有内存的申请与释放的相关文章

C语言动态内存的申请和释放

什么是动态内存的申请和释放? 当程序运行到需要一个动态分配的变量时,必须向系统申请取得堆中的一块所需大小的存储空间,用于存储该变量.当不再使用该变量时,也就是它的生命结束时,要显式释放它所占用的存储空间,这样系统就能对该堆空间进行再次分配,做到重复使用有限的资源. 下面将介绍动态内存申请和释放的函数 1.malloc函数 在C语言中,使用malloc函数来申请内存.函数原型如下: #include<stdlib.h> void *malloc(size_t size); 参数size代表需要动

opencv里vector的内存的申请和释放的问题

改成: CvMemStorage* m_storage=cvCreateMemStorage(0); CvSeq * m_contour=0; cvFindContours( &IPlImage(img), m_storage, &m_contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0)); //释放内存 cvReleaseMemStorage(&m_storage); msdn

C和C++动态内存的申请与释放思考

这里分配内存以数组为例,这样就建立了一种思维,肯定离不开数组与指针的关系,这两者的关系是一个永远的话题,具体的可以参见我的这篇文章,是关于数组与指针的下来我们开始动态内存分配方法之旅吧! C语言的: C++语言的: 版权声明:本文为博主原创文章,未经博主允许不得转载.

Apache Spark源码走读之19 -- standalone cluster模式下资源的申请与释放

欢迎转载,转载请注明出处,徽沪一郎. 概要 本文主要讲述在standalone cluster部署模式下,Spark Application在整个运行期间,资源(主要是cpu core和内存)的申请与释放. 构成Standalone cluster部署模式的四大组成部件如下图所示,分别为Master, worker, executor和driver,它们各自运行于独立的JVM进程. 从资源管理的角度来说 Master  掌管整个cluster的资源,主要是指cpu core和memory,但Ma

内存申请和释放及堆连续

glibc 内存申请和释放及堆连续检查 C语言有两种内存申请方式: 1.静态申请:当你声明全局或静态变量的时候,会用到静态申请内存.静态申请的内存有固定的空间大小.空间只在程序开始的时候申请一次,并且不再释放(除非程序结束). 2.自动申请:当你声明自动变量的时候会使用自动申请.函数参数.局部变量都属于自动变量.这些变量空间在程序执行致相关语句块申请,离开语句块时释放. 还有一种内存申请方式:动态内存申请.C语言变量并不支持动态内存申请,这一功能由库函数实现.C里面没有动态这个存储类型!! 当你

[CareerCup] 13.9 Aligned Malloc and Free Function 写一对申请和释放内存函数

13.9 Write an aligned malloc and free function that supports allocating memory such that the memory address returned is divisible by a specific power of two. EXAMPLE align_malloc (1000,128) will return a memory address that is a multiple of 128 and t

Unity内存申请和释放

转自:http://www.jianshu.com/p/b37ee8cea04c 1.资源类型 GameObject, Transform, Mesh, Texture, Material, Shader, Script和各种其他Assets. 2.资源创建方式 静态引用,在脚本中加一个public GameObject变量,在Inspector面板中拖一个prefab到该变量上,然后在需要引用的地方Instantiate: Resource.Load,资源需要放在Assets/Resource

C++在堆上申请和释放内存 - new &amp; delete

// 动态申请内存, 指向一个未初始化的整型 int *pi = new int; // pi指向一个整型值,初始化为0 int *pi = new int(); // value of i is 1024 int i(1024); // pi指向1024 int *pi = new int(1024); // value of  s is "99999" string s(5, '9'); // *ps is "999999" string *ps = new s

【小松教你手游开发】【unity实用技能】Unity内存申请和释放(转自tnqiang)

这里先声明转自http://www.jianshu.com/p/b37ee8cea04c 1.资源类型 GameObject, Transform, Mesh, Texture, Material, Shader, Script和各种其他Assets. 2.资源创建方式 静态引用,在脚本中加一个public GameObject变量,在Inspector面板中拖一个prefab到该变量上,然后在需要引用的地方Instantiate: Resource.Load,资源需要放在Assets/Reso