> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PFMemAllocFunction

> 在遊戲使用 PFMemSetFunctions 安裝自訂記憶體攔截之後，PlayFab 呼叫以配置指定大小記憶體緩衝區的回呼。

PlayFab 每次需要動態配置記憶體緩衝區時所呼叫的回呼。

## 語法

```cpp theme={null}
void* STDAPIVCALLTYPE PFMemAllocFunction(
    size_t size,
    uint32_t memoryTypeId
);
```

### 參數

**`size`**   `_In_` size\_t

要配置的大小 (以位元組為單位)。此值絕不會是零。

**`memoryTypeId`**   `_In_` uint32\_t

所配置記憶體之內部類別的不透明識別碼。請忽略此值。

### 傳回值

類型：void\*

指向已配置之指定大小記憶體區塊的指標；如果配置失敗，則為 `nullptr`。標頭會以 `_Ret_maybenull_` 和 `_Post_writable_byte_size_(size)` 標註傳回值。

## 備註

若要安裝此回呼，請在 [PFMemoryHooks](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/structs/pfmemoryhooks.md) 結構的 `alloc` 成員中設定它，並在呼叫 [PFInitialize](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfcore/functions/pfinitialize.md) 之前，將該結構傳遞給 [PFMemSetFunctions](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/functions/pfmemsetfunctions.md)。同時將 `free` 成員設定為對應的 [PFMemFreeFunction](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/functions/pfmemfreefunction.md) 回呼。如果只設定這兩個成員之一，PFMemSetFunctions 會傳回 `E_INVALIDARG`。

此回呼必須傳回指向所要求大小之連續記憶體區塊的指標。在 PlayFab 將該區塊傳遞給您的 PFMemFreeFunction 回呼之前，區塊必須保持有效。當 PlayFab 不再需要記憶體時，會將此回呼傳回的每個非 Null 指標傳遞給您的 PFMemFreeFunction 回呼。

如果您呼叫 PFMemSetFunctions 時 libHttpClient 尚未初始化，PlayFab 也會安裝攔截，將 libHttpClient 的配置路由至此回呼。

若要取得目前使用中的攔截 (包括預設攔截)，請呼叫 [PFMemGetFunctions](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/functions/pfmemgetfunctions.md)。

PlayFab 可能會從不同的執行緒呼叫此回呼，因此請讓它具備執行緒安全。

## 需求

**標頭：** PFPlatform.h

**程式庫：** PlayFabCore.lib

**支援的平台：** Windows、XBOX One 系列主機與 XBOX Series 主機

## 另請參閱

[PFPlatform 成員](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/pfplatform_members.md)

[PFMemoryHooks](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/structs/pfmemoryhooks.md)

[PFMemFreeFunction](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/functions/pfmemfreefunction.md)


## Related topics

- [PFMemFreeFunction](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/functions/pfmemfreefunction.md)
- [PFMemoryHooks](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/structs/pfmemoryhooks.md)
- [Services C API overview - PFPlatform.h](https://docs.xbox.com/zh-TW/services/playfab/api-references/c/pfplatform/pfplatform_members.md)
- [HCMemAllocFunction](https://docs.xbox.com/zh-TW/reference/live/httpclient/httpclient/functions/hcmemallocfunction.md)
- [XblMemAllocFunction](https://docs.xbox.com/zh-TW/reference/live/xsapi-c/xbox_live_global_c/functions/xblmemallocfunction.md)
