《windows核心编程》 18章 堆
堆的优缺点:
优点:让我们专心解决手头问题,不必理会分配粒度和页边界这类事情。
缺点:分配和释放内存块的速度比其他方式慢,而且也无法对物理存储器的调拨和撤销进行直接控制。
什么是堆:
堆就是一块预订的地址空间区域。刚开始,区域大部分页面都没以调拨物理存储器。随前我们不断的从堆中分配内存,堆管理器会给堆调拨越来越多的物理存储器。这些物理存储器都是从页交换文件中分配的。释放堆中的内存块时,堆管理器会撤销已调拨的物理存储器。
18.1 进程默认堆
进程初始化时,系统会在进程地址空间创建一个堆。这个堆被称为默认堆。我们可以创建应用程序使用/HEAP链接器开关来改变默认区域大小。
多个线程分配堆的时候是依次分配的。
GetProcessHeap()得到进程默认堆句柄
18.2 为什么要创建额外的堆
- 对组件进行保护
- 更有效的内存管理
- 局部访问
- 避免线程同步的开销
- 快整释放
18.3 如何创建额外堆
HANDLE HeapCreate(fdwOptions,SIZE_T dwInitialSize,SIZE_T dwMaximumSize);
18.3.1 从堆中分配内存块
HeepAlloc(HANDLE hHeap,DWORD fdwFlags,SIZE_T dwBytes);
18.3.1 调整内存块大小
HeadReAlloc(…);
18.3.3 获得内存块大小
HeapSize(…)
18.3.4 释放内存块
HeapFree(…)
18.3.5 销毁堆
BOOL HeapDestryoy(HANDLE hHeap);
18.3.6 c++中的堆操作
new 和 delete
18.4 其它堆函数
Heap32First,Heap32Next,Heap32ListFirst,Heap32ListNext,GetProcessHeaps
HeapLock,HeapUnlock
HeapWalk
最新文章
- 深入理解DOM节点类型第五篇——元素节点Element
- 在centos 7.0上利用yum一键安装mono
- LD_LIBRARY_PATH的设定
- gcc与gdb版本兼容问题
- C# inline-hook / api-hook
- Linux强制访问控制机制模块分析之mls_type.h
- IE6 IE7 IE8(Q) 不支持 JSON 对象
- 文本编辑器 markdown
- Oracle INTERVAL DAY TO SECOND数据类型
- FreeRTOS中断优先级配置(重要)
- godoc
- CentOS配置VSFTP服务
- Nodejs--util模块
- Python学习方法(待补充)
- 为什么要在linux命令前加上 ./
- Android 目录结构
- scala (8) 模糊匹配
- Vue2.0 + ElementUI的+ PageHelper实现的表格分页
- Cookie Session 和Django分页
- laravel开启调试模式
热门文章
- 爬虫框架Scrapy的第一个爬虫示例入门教程
- Python的异步编程[0] ->; 协程[1] ->; 使用协程建立自己的异步非阻塞模型
- 模板—字符串—Manacher
- Jenkins获取分支的插件
- [COGS2479 &;&; COGS2639]高维偏序(CDQ分治,bitset)
- small test on 5.29 night T1
- POJ 3260 The Fewest Coins(背包问题)
- tomcat官网
- chrome 技巧 记录一些以前不太熟悉的
- Android studio百度地图demo出现230错误,key校验失败