GlobalAlloc是標(biāo)準(zhǔn)內(nèi)存管理函數(shù),標(biāo)準(zhǔn)內(nèi)存管理函數(shù)都是操作進程的默認堆,所以這個函數(shù)是從進程的從進程的默認堆中分配內(nèi)存空間,分配的空間可以是可移動的也可以是不可以移動的??梢苿拥膬?nèi)存是指windows在需要的時候可以將這個內(nèi)存移動到另外一個地址
HeapAllock是堆管理函數(shù),堆管理函數(shù)可以操作非默認堆(當(dāng)然也可以操作默認堆),創(chuàng)建一個堆是用HeapCreate,這個函數(shù)返回一個堆句柄,然后可以用在HeapAllock函數(shù)中,即從返回的這個堆中申請內(nèi)存空間,HeapAllock申請的內(nèi)存只能是不可以移動的
而new則是c++的標(biāo)準(zhǔn)函數(shù),在windows的vc++編譯器中,new在申請內(nèi)存最終調(diào)用的是GlabalAllock,不過new還會調(diào)用類的構(gòu)造函數(shù)。
windows的內(nèi)存管理除了標(biāo)準(zhǔn)內(nèi)存管理函數(shù)和堆管理函數(shù)之外,還有更加底層的虛擬內(nèi)存管理函數(shù),VirtualAllock就是一個虛擬內(nèi)存管理函數(shù)。
posted on 2009-05-31 16:46
黃劍父 閱讀(157)
評論(0) 編輯 收藏 引用