堆函数

【勇芳软件工作室】汉化HomePreviousNext

堆功能使进程能够创建一个专用堆,一个或多个页面在调用进程的地址空间中。然后,该进程可以使用单独的一组函数来管理该堆中的内存。从专用堆分配的内存和通过使用标准分配函数(GlobalAllocLocalAlloc的malloc等)分配的内存之间没有区别)。

HeapCreate函数创建一个专用堆对象,调用进程可以通过使用HeapAlloc函数从中分配内存块。HeapCreate同时指定堆的初始大小和最大大小。初始大小决定了最初分配给堆的已提交,读写页面的数量。最大大小决定保留页面的总数。这些页面在堆可以增长的进程??的虚拟地址空间中创建一个连续的块。如果HeapAlloc的请求超过了已提交页面的当前大小,假定其物理存储空间可用,则附加页面将自动从此保留空间提交。一旦提交了页面,它们就不会被解析,直到进程终止,直到通过调用HeapDestroy函数来破坏堆。

专用堆对象的内存只能由创建它的进程访问。如果一个动态链接库(DLL)创建一个专用堆,它会在调用该DLL的进程的地址空间中这样做。它只能在该过程中访问。

HeapAlloc函数从专用堆分配指定数量的字节,并返回指向分配块的指针。该指针标识要释放的HeapFree功能块或HeapSize功能来确定大小的块。

HeapAlloc分配的内存不可移动。因为系统无法压缩专用堆,所以堆可能变成碎片。

堆功能的一个可能用途是在进程启动时创建一个专用堆,指定一个足够大的初始大小以满足进程的内存要求。如果对HeapCreate功能的调用失败,则该过程可以终止或通知用户内存不足;然而,如果成功,则确保具有所需的存储器的过程。