VirtualAlloc一次分配1PAGE以上的RAM. 每次分配都是PAGE的整數(shù)倍.
你不會(huì)想為了分配1個(gè)BYTE的空間而浪費(fèi)剩下的4095字節(jié). OK. 你可以自己寫算法,多分
配幾PAGE. 然后每次分配少量數(shù)據(jù)時(shí)就從那幾PAGE中劃分出來. 什么? 你笨到不會(huì)寫分
配算法? 好巴 KERNEL32給你一個(gè)解決辦法. 用HeapAlloc/GlobalAlloc分配RAM. 這樣,
KERNEL32幫你完成分配動(dòng)作, 并且盡量在減少用于跟蹤空閑區(qū)域和已占用區(qū)域消耗的數(shù)
據(jù)結(jié)構(gòu).
很久以前也有個(gè)產(chǎn)品叫做WINDOWS. 那時(shí)候的WINDOWS是16BIT的. 地址空間有些緊俏.
有錢不夠. 還需要糧票肉票才能拿到. 你已經(jīng)調(diào)用GlobalAlloc和已經(jīng)出錢的性質(zhì)一樣.
GlobalAlloc還不夠. 有時(shí)候需要GlocalLock才能確定你的東西確實(shí)可以拿到手.不然你
的指針會(huì)非法. 被充公. 你的應(yīng)用會(huì)被殺頭. 扯遠(yuǎn)了. 后來OS進(jìn)化了. 覺得可以取消糧
票肉票. 但是你必須用新版鈔票才行. 那就是HeapAlloc. 只要市場(chǎng)上的RAM數(shù)量沒問題
. 你的HeapAlloc沒問題. 那就總能拿到東西. 但是, 你總不能說有了2000版的鈔票,
那80版的馬上作廢啊. 那GlobalAlloc也只好繼續(xù)流通下去. 至于可以流通到什么時(shí)候.
沒人知道.