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