《windows核心程式設計》 18章 堆

2021-09-08 09:43:20 字數 1154 閱讀 6945

堆的優缺點:

優點:讓我們專心解決手頭問題,不必理會分配粒度和頁邊界這類事情。

缺點:分配和釋放記憶體塊的速度比其他方式慢,而且也無法對物理儲存器的調撥和撤銷進行直接控制。

什麼是堆:

堆就是一塊預訂的位址空間區域。剛開始,區域大部分頁面都沒以調撥物理儲存器。隨前我們不斷的從堆中分配記憶體,堆管理器會給堆調撥越來越多的物理儲存器。這些物理儲存器都是從頁交換檔案中分配的。釋放堆中的記憶體塊時,堆管理器會撤銷已調撥的物理儲存器。

18.1 程序預設堆

多個執行緒分配堆的時候是依次分配的。

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

《Windows核心程式設計》學習筆記(14) 堆

堆非常適合分配大量的小型資料。它是用來管理鍊錶和樹的最佳方式。但是它分配和釋放記憶體塊的速度比虛擬記憶體和記憶體對映檔案要慢,而且也無法再對物理儲存器的調撥和撤銷調撥進行直接控制。乙個程序同時可以有多個堆,程序在整個生命週期內可以建立和銷毀這些堆。但是,預設的堆是在程序開始執行之前由系統自動建立的,...

Python核心程式設計 第18章 多執行緒

1.對python虛擬機器的訪問由全域性直譯器鎖來控制,正是這個鎖能保證同一時刻只有乙個執行緒在執行。import threading loops 4,2 def loop nloop,nsec print start loop nloop,at ctime sleep nsec print loo...

Windows核心程式設計

內容簡介 這是一本經典的windows核心程式設計指南,從第1版到第5版,引領著數十萬程式設計師走入windows開發陣營,培養了大批精英。作為windows開發人員的必備參考,本書是為打算理解windows的c和c 程式設計師精心設計的。第5版全面覆蓋windows xp,windows vist...