虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
http://blog.csdn.net/zj510/article/details/39400087
内存管理有三种方式:
1. 虚拟内存,VirtualAlloc之类的函数
2. 堆,Heapxxx函数,malloc,new等
3. 内存映射文件,Memory Mapped File
很多人都会困惑,但是看下面的图片就会比较明白了。这个图片从MSDN上拷来。
堆和虚拟内存,从上面的图片就可以看出,其实所谓的堆,也就是在虚拟内存上抽象出来的。如果直接用Virtualxxx系列函数,是有一些限制的,比如每次只能分配页大小倍数的内存,内存地址也必须对齐什么的。新手很难用。正因为如此,才出现了堆。实际上堆Heap内部就是使用Virtual系列函数的。基本思想就是:先用VirtualAlloc分配一个比较大的内存,然后用户每次申请堆内存的时候,从分配出来的虚拟内存块上指定一块给用户。比如第一次分配堆内存从A地址开始的100个字节,第二次分配的时候就是A+100开始。
Memory Mapped File就不太一样了,从上面的图可以看出MMF并没有调用Virtual系列函数。它直接调用内核层了。
对于malloc和new,这2个并不是操作系统API,它们是语言提供的函数。在不同的系统上面有不同的实现方法,在Windows上面,new调用malloc,malloc调用堆函数(heapxxx),堆函数调用Virtual系列函数。在Linux上面就调用相应的linux API.
虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File相关推荐
- Axi memory mapped to PCI Express、uart和gpio IP核在vivado中的应用
先了解了一下几个PCIE IP核,网上这样说(链接: [https://www.amobbs.com/thread-5693775-1-1.html] 7 Series Integrated Bloc ...
- C语言之内存管理初探:栈和堆、malloc、calloc、realloc、free
一. 进程空间 二.进程空间图示 程序被加载到内存以后,0-4G的内存空间.这0-4G内存中的布局如下图: 三. 栈内存 1.栈存储的特点: 栈的大小并不大,他的意义并不在于存储大数据,而在于 ...
- oracle dump 文件解析,Oracle 常用的dump(Memory Dumps/File Dumps/Trace 文件使用示例)
一.Memory Dumps 1).Global Area ALTER SESSION SET EVENTS 'immediate trace name global_area level n'; 1 ...
- IO的端口映射和内存映射 (Port mapped I/O 和 Memory mapped I/O说明)
IO端口和IO内存的区别及分别使用的函数接口 每个外设都是通过读写其寄存器来控制的.外设寄存器也称为I/O端口,通常包括:控制寄存器.状态寄存器和数据寄存器三大类.根据访问外设寄存器的不同方式,可以 ...
- Xilinx IP核AXI Memory Mapped to PCI Express使用
作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 性能 测试平台:长城的FT15 ...
- 简单深入两个虚拟内存API VirtualAlloc及VritualCopy
VirtualAlloc : (配置虛擬記憶體) [MSDN] http://msdn.microsoft.com/en-us/library/aa366887(VS.85).aspx LPVOID ...
- Windows Mobile使用Shared Memory(共享内存)进行IPC(进程间通信)的开发
背景 在Unix-like系统进行IPC(Inter-process communication)通信,Shared memory是效率最高的,我称之为IPC的王中王. 简介 本文讲述在Windows ...
- Persistent Memory编程简介
Persistent Memory编程简介 编程 libpmem 持久化函数 libpmemobj 跟对象 root object 例程 事务支持 type safety 线程安全 管理工具 ipmc ...
- 《windows核心编程》–Windows内存体结构(一)
13.1 进程虚拟地址空间 每个进程都有自己的专有地址空间,对32位进程来说,这个地址空间的大小为4GB,这是因为32位指针可以表示从0x00000000-0xffffffff的任意值.对64位进程来 ...
最新文章
- python报错 TypeError: string indices must be integers
- ITK:双边过滤图像
- 记录使用IDEA部署Tomcat时提示错误:the selected directory is not a TomEE home
- Git中上传忽略文件的方法 .gitignore
- 深度优先,广度优先,拓扑排序(实战题解)
- 【java】Java 8 - 移除Permgen 使用元空间
- Smali语法汇总(二)
- Windows 不能在 本地计算机 启动 SQL Server(MSSQLSERVER) 10048
- Spring @Cacheable设置过期时间
- 一款好用的取色工具TakeColor.exe
- Swift人工智能实战:从基础理论到AI驱动的应用程序开发
- 硕士研究生阶段如何学习slam机器人?
- JQuery 如何使用插件如何安装插件(详细讲解)
- iPhone免越狱Git服务器搭建教程-iSH
- 【飞轮储能】基于matlab simulink飞轮储能(永磁同步电机)仿真【含Matlab源码 2421期】
- 【码云学习02】Git基本命令
- 【转载】Visual Studio 2017各版本安装包离线下载、安装全解析
- oracle查询元数据,Oracle Spatial-元数据及SDO_GEOMETRY
- 心阶ssr上不去_高中数学成绩上不去的“九宗罪”!附经典数学题50道
- linux开发工具列表
热门文章
- c语言如何给阻塞函数加超时,在代码中写一个延时而不阻塞的函数方法,给大家的参考 - 单片机 -
电子工程世界-论坛 -
手机版...
- mysql 统计_mysql数据统计级别技巧
- 【星球知识卡片】换脸算法和人脸驱动都有哪些核心技术,如何对其长期深入学习...
- lazada开店流程图解,及平台类目佣金分享!
- 数组与指针的艺术--深入探索c/c++数组与指针的奥秘
- 全国农商互联暨精准扶贫产销对接 对话农民丰收节交易会
- 注重经营管理谋定市场开发-农业大健康·台湾:有机农业借鉴
- 【USACO06DEC】—牛奶模式Milk Patterns(后缀自动机)
- django 单元测试小结
- xtraback工具的使用和备份