這個函式從堆中分配指定大小的位元組數。
格式:
HLOCAL LocalAlloc(
UINT uFlags,
UINT uBytes
);
Parameters uFlags [in] Specifies how to allocate memory. If zero is specified, the default is the LMEM_FIXED flag. The following table shows the flags for this parameter. The parameter is one of these flags. ValueDescriptionLMEM_FIXED Allocates fixed memory. The return value is a pointer to the memory object.LPTR Combines the LMEM_FIXED and LMEM_ZEROINIT flags.LMEM_ZEROINIT Initializes memory contents to zero.uBytes [in] Specifies the number of bytes to allocate.
參數:
uFlags[in]指定怎樣去分配記憶體。如果zero被指定,默認的是LMEM_FIXED標誌。此參數有三種標誌:
LMEM_FIXED:分配固定記憶體,返回值是指向一個記憶體對象的指針。
LMEM_ZEROINIT:初始化記憶體內容為zero。
LPTR:結合了LMEM_FIXED和LMEM_ZEROINIT這兩種標誌。
LMEM_MOVEABLE:分配可移動記憶體。
LMEM_DISCARDABLE:分配可刪除的記憶體。
uBytes:[in]指定要分配的位元組數。
Return Values
A handle to the newly allocated memory object indicates success.
NULL indicates failure.
To get extended error information, call GetLastError.
返回值:成功則返回一個指向新分配的記憶體對象的句柄。
NULL表明函式失敗。
要得到更多的錯誤信息的話,調用GetLastError。
Remarks
If the heap does not contain sufficient free space to satisfy the request, LocalAlloc returns NULL. Because NULL is used to indicate an error, virtual address zero is never allocated. Therefore, it is easy to detect the use of a NULL pointer.
If this function succeeds, it allocates at least the amount requested. If the amount allocated is greater than the amount requested, the process can use the entire amount.
To determine the number of bytes allocated, use the LocalSize function.
To free the memory, use the LocalFree function.
For Windows CE versions 1.0 and 1.01, the local heap for each process cannot exceed 1 MB. However, a process can create multiple heaps using the HeapCreate function and each heap can be up to 1 MB.
For Windows CE versions 1.0 through 2.12, allocating memory approximately 0 to 7 bytes under 192K in size causes the corresponding call to LocalFree to fail for certain memory blocks in this size range. The return code is ERROR_INVALID_PARAMETER.
備註:
該函式用局部記憶體對象的分配(全局記憶體對象的分配使用函式GlobalAlloc)。
如果堆中沒有充足的自由空間去滿足我們的需求,LocalAlloc返回NULL。因為NULL被使用去表明一個錯誤,虛擬地址zero從不被分配。因此,很容易去檢測NULL指針的使用。
如果函式成功的話,它至少會分配我們指定大小的記憶體。如果分配給我們的數量多於我們指定的話,這個進程能使用整個數量的記憶體。
可以使用LocalSize函式去檢測被分配的位元組數。
可以使用LocalFree函式去釋放這段記憶體。
對於分配的可移動記憶體、可刪除記憶體讀取前需加鎖(相關函式LocalLock)否則將無法正常讀取,讀取完成後需解鎖(相關函式LocalUnlock)否則無法使用LocalFree函式來釋放記憶體。
對於Windows CE versions 1.0 and 1.01,每個進程的本地堆不能超過1MB。然而,一個進程能夠使用HeapCreate函式創建多個堆,而且每個堆分配的位元組能最大能達到1MB。
對於Windows CE版本1.0到2.12,分配在192K數量範圍內的約為0到7個位元組的大小記憶體――在這一尺寸範圍的某些記憶體塊――引起相應的調用LocalFree失敗。返回的代碼是ERROR_INVALID_PARAMETER。
Requirements
OS Versions: Windows CE 1.0 and later.
Header: Winbase.h.
Link Library: Coredll.lib.
相關詞條
-
LocalAlloc
ten dicates dicates
-
記憶體管理
局部記憶體對象LocalAlloc函式用來分配局部記憶體,它在應用程式局部堆中分配一個記憶體塊,並返回記憶體塊的句柄。LocalAlloc函式可以指定...的(LMEM_DISCARDABLE)。如果局部堆中無法分配申請的記憶體,則LocalAlloc函式返回...
技術簡介 主記憶體 記憶體管理 記憶體對象 -
執行緒局部存儲
記憶體區域(使用LocalAlloc()函式調用)void* p_fvalue = LocalAlloc(LPTR,sizeof(float...
介紹 實現 方法 -
Fineplus
功能概述Fineplus(完美助手,下稱"本軟體")是一個的強大系統輔助軟體,具有以下功能:1、通過控制用戶指定程式的記憶體用量,...
功能概述 使用方法 更新 注意事項 Fineplus 配置檔案格式介紹: -
TLSAlloc()
記憶體區域(使用LocalAlloc()函式調用),然後把指向這塊記憶體區域...
-
VirtualAlloc
記憶體。 這樣可以阻止其他記憶體分配函式malloc和LocalAlloc...
VC概述 VC聲明 說明 參數表說明 返回值 -
CreateWellKnownSid
; // 申請大足夠的記憶體 if(!(TheSID = LocalAlloc...
函式功能 函式原型 返回值 舉例 -
LocalLock
; 本地記憶體的句柄 這個句柄要么被 LocalAlloc返回,要么...
-
CMemoryState
管理函式LocalAlloc/LocalFree和GlobalAlloc...