GlobalAlloc是標(biāo)準(zhǔn)內(nèi)存管理函數(shù),標(biāo)準(zhǔn)內(nèi)存管理函數(shù)都是操作進(jìn)程的默認(rèn)堆,所以這個(gè)函數(shù)是從進(jìn)程的從進(jìn)程的默認(rèn)堆中分配內(nèi)存空間,分配的空間可以是可移動(dòng)的也可以是不可以移動(dòng)的。可移動(dòng)的內(nèi)存是指windows在需要的時(shí)候可以將這個(gè)內(nèi)存移動(dòng)到另外一個(gè)地址
HeapAllock是堆管理函數(shù),堆管理函數(shù)可以操作非默認(rèn)堆(當(dāng)然也可以操作默認(rèn)堆),創(chuàng)建一個(gè)堆是用HeapCreate,這個(gè)函數(shù)返回一個(gè)堆句柄,然后可以用在HeapAllock函數(shù)中,即從返回的這個(gè)堆中申請(qǐng)內(nèi)存空間,HeapAllock申請(qǐng)的內(nèi)存只能是不可以移動(dòng)的
而new則是c++的標(biāo)準(zhǔn)函數(shù),在windows的vc++編譯器中,new在申請(qǐng)內(nèi)存最終調(diào)用的是GlabalAllock,不過(guò)new還會(huì)調(diào)用類(lèi)的構(gòu)造函數(shù)。
windows的內(nèi)存管理除了標(biāo)準(zhǔn)內(nèi)存管理函數(shù)和堆管理函數(shù)之外,還有更加底層的虛擬內(nèi)存管理函數(shù),VirtualAllock就是一個(gè)虛擬內(nèi)存管理函數(shù)。