日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

GlobalAlloca GlobalLock GlobalUnlock函数的作用

發布時間:2025/3/21 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GlobalAlloca GlobalLock GlobalUnlock函数的作用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

調用GlobalAlloc函數分配一塊內存,該函數會返回分配的內存句柄。?
調用GlobalLock函數鎖定內存塊,該函數接受一個內存句柄作為參數,然后返回一個指向被鎖定的內存塊的指針。 您可以用該指針來讀寫內存。?
調用GlobalUnlock函數來解鎖先前被鎖定的內存,該函數使得指向內存塊的指針無效。?
調用GlobalFree函數來釋放內存塊。您必須傳給該函數一個內存句柄。

GlobalAlloc

函數原型
GlobalAlloc(UINT uFLAG,DWORD dwBytes);
說明?
分配一個全局內存塊?
返回值?
Long
,返回全局內存句柄。零表示失敗。會設置GetLastError?
參數表?
參數 類型及說明?
uFlags Long
,對分配的內存類型進行定義的常數標志,如下所示:?
????????????? GMEM_FIXED?
分配一個固定內存塊?
????????????? GMEM_MOVEABLE?
分配一個可移動內存塊?
????????????? GMEM_DISCARDABLE?
分配一個可丟棄內存塊?
????????????? GMEM_NOCOMPACT?
堆在這個函數調用期間不進行累積?
????????????? GMEM_NODISCARD?
函數調用期間不丟棄任何內存塊?
????????????? GMEM_ZEROINIT?
新分配的內存塊全部初始化成零?
dwBytes Long
,要分配的字符數?
注解?
如指定了?GMEM_FIXED,那么返回值就是要使用的實際內存地址即指針(GlobalLock?會返回同樣的值)——所以在使用固定內存塊的時候不需要執行一個?GlobalLock/GlobalUnlock?操作
由于?Win32?采用了高級的內存管理方案,所以使用可移動的內存塊并沒有什么好處
用這個函數分配的內存塊允許在8位邊界以內

GlobalLock??
函數功能描述:鎖定一個全局的內存對象,返回指向該對象的第一個字節的指針
函數原型
LPVOID GlobalLock( HGLOBAL hMem )
參數
hMem
:全局內存對象的句柄。這個句柄是通過GlobalAllocGlobalReAlloc來得到的
返回值:
調用成功,返回指向該對象的第一個字節的指針
調用失敗,返回NULL,可以用GetLastError來獲得出錯信息
注意:
調用過GlobalLock鎖定一塊內存區后,一定要調用GlobalUnlock來解鎖。

GlobalUnlock
函數功能描述:
解除被鎖定的全局內存對象
函數原型:BOOL GlobalUnlock( HGLOBAL hMem );
參數:hMem:全局內存對象的句柄
返回值:
非零值,指定的內存對象仍處于被鎖定狀態
0
,函數執行出錯,可以用GetLastError來獲得出錯信息,如果返回NO_ERROR,則表示內存對象已經解鎖了
注意:?????這個函數實際上是將內存對象的鎖定計數器減一,如果計數器不為0,則表示執行過多個GlobalLock函數來對這個內存對象加鎖,需要對應數目的GlobalUnlock函數來解鎖。
如果通過GetLastError函數返回錯誤碼為ERROR_NOT_LOCKED,則表示未加鎖或已經解鎖。

GlobalAlloc會從heap中分配所申請大小的一段內存,但是返回的只是一個這段內存的HANDLE,其他程序可能會在對內存進行操作的時候移動或者釋放這段內存,為了防止這樣的慘劇發生,可以調用GlobalLock將這段內存鎖住,原理就是內存對象的內部數據結構有一個鎖計數,這個有點像線程內核對象的UsageCount,只有當這個鎖計數減為零時系統在需要時才會將這段內存移動或者釋放掉(玩膩了,可以一腳踢開)。GlobalLock就是將鎖計數加一,相反的,每次調用GlobalUnlock是將鎖計數減一。簡單點說GlobalAlloc表示你對這段內存有興趣,不許釋放掉;GlobalUnlock表示你已經把她玩厭了,釋放不釋放不關你的事,反正你對她沒興趣了。)

轉載于:https://www.cnblogs.com/jinxiang1224/p/8468402.html

總結

以上是生活随笔為你收集整理的GlobalAlloca GlobalLock GlobalUnlock函数的作用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。