欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
HeapAlloc、GlobalAlloc、LocalAlloc、VirtualAlloc、malloc、new的異同
http://hi.baidu.com/gamedot/blog/item/6fad84a78dbdb19fd0435846.html
 
1. HeapAlloc:
MSDN上的解釋為:HeapALloc是從堆上分配一塊內存,且分配的內存是不可移動(dòng)的(即如果沒(méi)有連續的空間能滿(mǎn)足分配的大小,程序不能將其他零散的 空間利用起來(lái),從而導致分配失?。?,該分配方法是從一指定地址開(kāi)始分配,而不像GloabalAlloc是從全局堆上分配,這個(gè)有可能是全局,也有可能是 局部。函數原型為:
LPVOID
HeapAlloc(
    HANDLE hHeap,
    DWORD dwFlags,
   SIZE_T dwBytes
    );
hHeap是進(jìn)程堆內存開(kāi)始位置。
dwFlags是分配堆內存的標志。包括HEAP_ZERO_MEMORY,即使分配的空間清零。
dwBytes是分配堆內存的大小。
其對應的釋放空間函數為HeapFree。

2. GlobalAlloc
該函數用于從全局堆中分配出內存供程序使用,函數原型為:
HGLOBAL GlobalAlloc(
UINT uFlags,
SIZE_T dwBytes
);
uFlags參數含義
GHND   GMEM_MOVEABLE和GMEM_ZEROINIT的組合
GMEM_FIXED   分配固定內存,返回值是一個(gè)指針
GMEM_MOVEABLE   分配活動(dòng)內存,在Win32中,內存塊不能在物理內存中移動(dòng),但能在默認的堆中移動(dòng)。返回值是內存對象的句柄,用函數GlobalLock可將句柄轉化為指針
GMEM_ZEROINIT   將內存內容初始化為零
GPTR   GMEM_FIXED和GMEM_ZEROINIT的組合
一般情況下我們在編程的時(shí)候,給應用程序分配的內存都是可以移動(dòng)的或者是可以丟棄的,這樣能使有限的內存資源充分利用,所以,在某一個(gè)時(shí)候我們分配的那塊 內存的地址是不確定的,因為他是可以移動(dòng)的,所以得先鎖定那塊內存塊,這兒應用程序需要調用API函數GlobalLock函數來(lái)鎖定句柄。如下: lpMem=GlobalLock(hMem); 這樣應用程序才能存取這塊內存。所以我們在使用GlobalAllock時(shí),通常搭配使用GlobalLock,當然在不使用內存時(shí),一定記得使用 GlobalUnlock,否則被鎖定的內存塊一直不能被其他變量使用。
GlobalAlloc對應的釋放空間的函數為GlobalFree。

3. LocalAlloc
該函數用于從局部堆中分配內存供程序使用,函數原型為:
HLOCAL LocalAlloc(
UINT uFlags,
SIZE_T uBytes
);
參數同GlobalAlloc。
在16位Windows中是有區別的,因為在16位windows用一個(gè)全局堆和局部堆來(lái)管理內存,每一個(gè)應用程序或dll裝入內存時(shí),代碼段被裝入全局 堆,而系統又為每個(gè)實(shí)例從全局堆中分配了一個(gè)64kb的數據段作為該實(shí)例的局部堆,用來(lái)存放應用程序的堆棧和所有全局或靜態(tài)變量。而 LocalAlloc/GlobalAlloc就是分別用于在局部堆或全局堆中分配內存。
由于每個(gè)進(jìn)程的局部堆很小,所以在局部堆中分配內存會(huì )受到空間的限制。但這個(gè)堆是每個(gè)進(jìn)程私有的,相對而言分配數據較安全,數據訪(fǎng)問(wèn)出錯不至于影響到整個(gè)系統。
而在全局堆中分配的內存是為各個(gè)進(jìn)程共享的,每個(gè)進(jìn)程只要擁有這個(gè)內存塊的句柄都可以訪(fǎng)問(wèn)這塊內存,但是每個(gè)全局內存空間需要額外的內存開(kāi)銷(xiāo),造成分配浪費。而且一旦發(fā)生嚴重錯誤,可能會(huì )影響到整個(gè)系統的穩定。
不過(guò)在Win32中,每個(gè)進(jìn)程都只擁有一個(gè)省缺的私有堆,它只能被當前進(jìn)程訪(fǎng)問(wèn)。應用程序也不可能直接訪(fǎng)問(wèn)系統內存。所以在Win32中全局堆和局部堆都 指向進(jìn)程的省缺堆。用LocalAlloc/GlobalAlloc分配內存沒(méi)有任何區別。甚至LocalAlloc分配的內存可以被 GlobalFree釋放掉。所以在Win32下編程,無(wú)需注意Local和Global的區別,一般的內存分配都等效于 HeapAlloc(GetProcessHeap(),...)。
LocalAlloc對應的釋放函數為L(cháng)ockFree。

4. VirtualAlloc
該函數的功能是在調用進(jìn)程的虛地址空間,預定或者提交一部分頁(yè),如果用于內存分配的話(huà),并且分配類(lèi)型未指定MEM_RESET,則系統將自動(dòng)設置為0;其函數原型:
LPVOID VirtualAlloc(
LPVOID lpAddress, // region to reserve or commit
SIZE_T dwSize, // size of region
DWORD flAllocationType, // type of allocation
DWORD flProtect // type of access protection
);
VirtualAlloc可以通過(guò)并行多次調用提交一個(gè)區域的部分或全部來(lái)保留一個(gè)大的內存區域。多重調用提交同一塊區域不會(huì )引起失敗。這使得一個(gè)應用程 序保留內存后可以隨意提交將被寫(xiě)的頁(yè)。當這種方式不在有效的時(shí)候,它會(huì )釋放應用程序通過(guò)檢測被保留頁(yè)的狀態(tài)看它是否在提交調用之前已經(jīng)被提交。
VirtualAlloc對應的釋放函數為VirtualFree。

5.Malloc
malloc與free是C++/C語(yǔ)言的標準庫函數,可用于申請動(dòng)態(tài)內存和釋放內存。對于非內部數據類(lèi)型的對象而言,光用 malloc/free無(wú)法滿(mǎn)足動(dòng)態(tài)對象的要求。對象在創(chuàng )建的同時(shí)要自動(dòng)執行構造函數,對象在消亡之前要自動(dòng)執行析構函數。由于malloc/free是 庫函數而不是運算符,不在編譯器控制權限之內,不能夠把執行構造函數和析構函數的任務(wù)強加于malloc/free。
6.New
new/delete是C++的運算符??捎糜谏暾垊?dòng)態(tài)內存和釋放內存。C++語(yǔ)言需要一個(gè)能完成動(dòng)態(tài)內存分配和初始化工作的運算符new, 以一個(gè)能完成清理與釋放內存工作的運算符delete。注意new/delete不是庫函數。C++程序經(jīng)常要調用C函數,而C程序只能用malloc /free管理動(dòng)態(tài)內存。new 是個(gè)操作符,和什么"+","-","="...有一樣的地位.
        malloc是個(gè)分配內存的函數,供你調用的.
        new是保留字,不需要頭文件支持.
        malloc需要頭文件庫函數支持.new 建立的是一個(gè)對象,
        malloc分配的是一塊內存.
        new建立的對象你可以把它當成一個(gè)普通的對象,用成員函數訪(fǎng)問(wèn),不要直接訪(fǎng)問(wèn)它的地址空間
        malloc分配的是一塊內存區域,就用指針訪(fǎng)問(wèn)好了,而且還可以在里面移動(dòng)指針.
內存泄漏對于malloc或者new都可以檢查出來(lái)的,區別在于new可以指明是那個(gè)文件的那一行,而malloc沒(méi)有這些信息。new可以認為是malloc加構造函數的執行。new出來(lái)的指針是直接帶類(lèi)型信息的。而malloc返回的都是void指針。
 
(#)
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
HeapAlloc和GlobalAlloc以及VirtualAlloc三者之間的關(guān)系 - Stay Hungry, Stay Foolish - 博客園
內存的一些magic number和debug crt
Windows下動(dòng)態(tài)內存分配方式
c語(yǔ)言?xún)却娣峙浜瘮抵g的區別
GlobalAlloc等函數/new、malloc區別
VC中關(guān)于GlobalAlloc等的用法 - 產(chǎn)品和技術(shù) - 賽迪網(wǎng)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久