《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(…)