堆的优缺点:

优点:让我们专心解决手头问题,不必理会分配粒度和页边界这类事情。

缺点:分配和释放内存块的速度比其他方式慢,而且也无法对物理存储器的调拨和撤销进行直接控制。

什么是堆:

堆就是一块预订的地址空间区域。刚开始,区域大部分页面都没以调拨物理存储器。随前我们不断的从堆中分配内存,堆管理器会给堆调拨越来越多的物理存储器。这些物理存储器都是从页交换文件中分配的。释放堆中的内存块时,堆管理器会撤销已调拨的物理存储器。

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

最新文章

  1. 深入理解DOM节点类型第五篇——元素节点Element
  2. 在centos 7.0上利用yum一键安装mono
  3. LD_LIBRARY_PATH的设定
  4. gcc与gdb版本兼容问题
  5. C# inline-hook / api-hook
  6. Linux强制访问控制机制模块分析之mls_type.h
  7. IE6 IE7 IE8(Q) 不支持 JSON 对象
  8. 文本编辑器 markdown
  9. Oracle INTERVAL DAY TO SECOND数据类型
  10. FreeRTOS中断优先级配置(重要)
  11. godoc
  12. CentOS配置VSFTP服务
  13. Nodejs--util模块
  14. Python学习方法(待补充)
  15. 为什么要在linux命令前加上 ./
  16. Android 目录结构
  17. scala (8) 模糊匹配
  18. Vue2.0 + ElementUI的+ PageHelper实现的表格分页
  19. Cookie Session 和Django分页
  20. laravel开启调试模式

热门文章

  1. 爬虫框架Scrapy的第一个爬虫示例入门教程
  2. Python的异步编程[0] -> 协程[1] -> 使用协程建立自己的异步非阻塞模型
  3. 模板—字符串—Manacher
  4. Jenkins获取分支的插件
  5. [COGS2479 && COGS2639]高维偏序(CDQ分治,bitset)
  6. small test on 5.29 night T1
  7. POJ 3260 The Fewest Coins(背包问题)
  8. tomcat官网
  9. chrome 技巧 记录一些以前不太熟悉的
  10. Android studio百度地图demo出现230错误,key校验失败