> ## 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.

# Hooks de memória

> Controle as alocações de memória do SDK do PlayFab Services instalando hooks personalizados de alocação e liberação com PFMemSetFunctions antes de PFInitialize.

# Gerenciando alocações de memória

Com a API C do SDK do PlayFab Services, você pode especificar um retorno de chamada de função que o SDK chama sempre que tenta alocar memória. Se você não especificar retornos de chamada de função, o SDK usará as rotinas padrão de alocação de memória.

Para especificar manualmente suas rotinas de memória, você pode seguir estas etapas:

* No início do jogo:
  * Chame [**PFMemSetFunctions**](/pt-BR/services/playfab/api-references/c/pfplatform/functions/pfmemsetfunctions) para especificar os retornos de chamada de alocação para atribuir e liberar memória.
  * Chame [**PFInitialize**](/pt-BR/services/playfab/api-references/c/pfcore/functions/pfinitialize) para inicializar a biblioteca PlayFab Core.
  * Chame [**PFServicesInitialize**](/pt-BR/services/playfab/api-references/c/pfservices/functions/pfservicesinitialize) para inicializar a biblioteca PlayFab Services.

<Info>
  A ordem importa. **PFMemSetFunctions** deve vir antes de **PFInitialize**, e **PFInitialize** deve vir antes de **PFServicesInitialize**. Se você ignorar a chamada explícita a **PFInitialize**, **PFServicesInitialize** inicializará o Core internamente, mas, nesse ponto, seus hooks de memória ainda não estarão aplicados, então o SDK usará as rotinas de alocação padrão.
</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
```

* Enquanto o jogo está em execução:
  * Todas as chamadas ao SDK que alocam ou liberam memória chamam os retornos de chamada de tratamento de memória especificados.

* Quando o jogo é encerrado:
  * Chame [**PFServicesUninitializeAsync**](/pt-BR/services/playfab/api-references/c/pfservices/functions/pfservicesuninitializeasync) para recuperar todos os recursos associados ao PlayFab Services.
  * Chame [**PFUninitializeAsync**](/pt-BR/services/playfab/api-references/c/pfcore/functions/pfuninitializeasync) para recuperar todos os recursos associados ao PlayFab Core.
  * Limpe o gerenciador de memória personalizado do seu jogo.

## Referência

[Documentação de referência da API](/pt-BR/services/playfab/api-references/c/pfplatform/pfplatform_members)


## Related topics

- [Gerenciamento de memória no SDK unificado do PlayFab](/pt-BR/services/playfab/sdks/unified-sdk/memory-management.md)
- [Ciclo de vida do SDK](/pt-BR/services/playfab/sdks/c/lifecycle.md)
- [Notas de versão do SDK PlayFab Services para C/C++](/pt-BR/services/playfab/release-notes/playfab-c/index.md)
- [Notas de versão do SDK C++ do PlayFab Multiplayer](/pt-BR/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/lobby-and-matchmaking-release-notes.md)
- [Custos de memória entre núcleos](/pt-BR/build/console-features/memory/Cross-Core-Memory-Costs.md)
