虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
来源:互联网 发布:js关闭弹出页面 编辑:程序博客网 时间:2024/06/06 11:01
原文: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.
0 0
- 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
- 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
- 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
- (VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped
- VirtualAlloc, HeapAlloc, malloc和new
- malloc,new,heapAlloc,virtualAlloc
- VirtualAlloc HeapAlloc malloc new区别
- malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较
- malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较
- malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较
- malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较
- malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较
- 内存分配:malloc, new, HeapAlloc, VirtualAlloc
- malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较
- Windows系统上的VirtualAlloc, HeapAlloc和malloc,new的区别
- HeapAlloc、VirtualAlloc、GlobalAlloc和LocalAlloc、 alloc、new
- HeapAlloc,GlobalAlloc,LocalAlloc,VirtualAlloc,malloc,new的异同
- HeapAlloc,GlobalAlloc,LocalAlloc,VirtualAlloc,malloc,new的异同
- 用NFS挂载时参数解析及uboot设置
- int main(int argc, char* argv[])
- php测试数据库连接
- auto_ptr与shared_ptr 的区别
- FBReaderJ阅读器书籍渲染显示过程
- 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
- 美团Android自动化之旅—适配渠道包
- ArcEngine ICoommand和ITool 的区别
- div里的内容水平居中和垂直居中
- AlertDialog
- Yii 邮件发送
- QNX HTML5的搭建和project的创建
- Java中字符串(String)的存储和赋值原理以及String\StringBuffer\StringBiulder的异同
- 瑞柏匡丞谈中国互联网医疗创业能从HealthTap学到什么?