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

# メモリフック

> PFInitialize の前に PFMemSetFunctions を使用してカスタムの alloc および free フックをインストールすることにより、PlayFab Services SDK のメモリ割り当てを制御します。

# メモリ割り当ての管理

PlayFab Services SDK の C API では、SDK がメモリの割り当てを試みるときに呼び出す関数コールバックを指定できます。関数コールバックを指定しない場合、SDK は標準のメモリ割り当てルーチンを使用します。

メモリルーチンを手動で指定するには、次の手順を実行できます:

* ゲーム開始時:
  * メモリの割り当てと解放のための割り当てコールバックを指定するために [**PFMemSetFunctions**](/services/playfab/api-references/c/pfplatform/functions/pfmemsetfunctions) を呼び出します。
  * PlayFab Core ライブラリを初期化するために [**PFInitialize**](/services/playfab/api-references/c/pfcore/functions/pfinitialize) を呼び出します。
  * PlayFab Services ライブラリを初期化するために [**PFServicesInitialize**](/services/playfab/api-references/c/pfservices/functions/pfservicesinitialize) を呼び出します。

<Info>
  順序が重要です。**PFMemSetFunctions** は **PFInitialize** より前に、**PFInitialize** は **PFServicesInitialize** より前に呼ばれる必要があります。明示的な **PFInitialize** の呼び出しをスキップすると、**PFServicesInitialize** が内部で Core を初期化しますが、その時点でメモリフックはまだ適用されていないため、SDK は代わりにデフォルトの割り当てルーチンを使用します。
</Info>

```cpp theme={null}
    PFMemoryHooks playFabHooks{ MyAllocHook, MyFreeHook };
    PFMemSetFunctions(&playFabHooks);
    HRESULT hr = PFInitialize(nullptr); // Add your own error handling when FAILED(hr) == true
    hr = PFServicesInitialize(nullptr); // Add your own error handling when FAILED(hr) == true
```

* ゲームの実行中:
  * メモリを割り当てたり解放する SDK への呼び出しは、指定されたメモリ処理コールバックを呼び出します。

* ゲームの終了時:
  * PlayFab Services に関連付けられたすべてのリソースを回収するために [**PFServicesUninitializeAsync**](/services/playfab/api-references/c/pfservices/functions/pfservicesuninitializeasync) を呼び出します。
  * PlayFab Core に関連付けられたすべてのリソースを回収するために [**PFUninitializeAsync**](/services/playfab/api-references/c/pfcore/functions/pfuninitializeasync) を呼び出します。
  * ゲームのカスタムメモリマネージャーをクリーンアップします。

## リファレンス

[API リファレンスドキュメント](/services/playfab/api-references/c/pfplatform/pfplatform_members)


## Related topics

- [SDK ライフサイクル](/ja-jp/services/playfab/sdks/c/lifecycle.md)
- [PlayFab 統合 SDK でのメモリ管理](/ja-jp/services/playfab/sdks/unified-sdk/memory-management.md)
- [XblMemSetFunctions](/ja-jp/reference/live/xsapi-c/xbox_live_global_c/functions/xblmemsetfunctions.md)
- [HCMemGetFunctions](/ja-jp/reference/live/httpclient/httpclient/functions/hcmemgetfunctions.md)
- [サービス C API の概要 - PFPlatform.h](/ja-jp/services/playfab/api-references/c/pfplatform/pfplatform_members.md)
