

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Alocação de memória do kernel
<a name="kernel-memory-allocation"></a>

O kernel do RTOS precisa de memória RAM toda vez que uma tarefa, fila ou outro objeto do RTOS é criado. A memória RAM pode ser alocada:
+ Estaticamente no momento da compilação.
+ Dinamicamente a partir do heap do RTOS pelas funções de criação de objeto da API do RTOS.

Quando os objetos do RTOS são criados dinamicamente, o uso da biblioteca `malloc()` e das funções C `free()` padrão nem sempre é apropriado por diversos motivos:
+ Elas podem não estar disponíveis em sistemas incorporados.
+ Elas ocupam um espaço de código valioso.
+ Normalmente, elas não são seguras para o thread.
+ Elas não são deterministas.

Por esses motivos, o FreeRTOS mantém a API de alocação de memória em seu nível portátil. A camada portátil está fora dos arquivos de origem que implementam a funcionalidade principal do RTOS, para que você possa fornecer uma implementação específica da aplicação apropriada para o sistema em tempo real que você está desenvolvendo. Quando o kernel do RTOS exige RAM, ele chama `pvPortMalloc()` em vez de `malloc()`. Quando a memória RAM está sendo liberada, o kernel do RTOS chama `vPortFree()` em vez de `free()`.