Como funcionam os alocadores de memória do STD C?
Um pequeno artigo que explica por que seu programa jamais retorna memória ao sistema operacional enquanto está em execução.
Uma introdução ao sistema de alocação de memória do STD C
O Standard C, conforme definido pelo comitê ANSI X3J11,
dispõe de um conjunto de funções e tipos de dados que são
corriqueiramente chamados de biblioteca Standard C. Esta
biblioteca contém rotinas de uso geral que complementa a
linguagem com operações que, efetivamente, todos os programas
usam, como:
O foco deste artigo está nas funções de alocação de memória. Basicamente, a memória é, efetivamente, algo que depende da plataforma. Plataformas diferentes apresentam formas diferentes de gerenciar e alocar memória. Assim sendo, o comitê X3J11 decidiu por criar uma camada de abstração que torna a tarefa de alocação de memória independente da plataforma.
Basicamente, as funções de alocação têm seus protótipos definidos no cabeçalho padrão stdlib.h. São as funções:
As três primeiras implementam formas diferentes de alocar memória para o seu programa. A última visa liberar a memória previamente alocada para uso posterior. Estas funções usam um esquema muito interessante de alocação e gerenciamento de memória que poucos programadores C conhecem.
- funções de I/O para gerenciamento de streams
- funções para instrumentação
- funções de suporte a algoritmos básicos
- dentre outras.
O foco deste artigo está nas funções de alocação de memória. Basicamente, a memória é, efetivamente, algo que depende da plataforma. Plataformas diferentes apresentam formas diferentes de gerenciar e alocar memória. Assim sendo, o comitê X3J11 decidiu por criar uma camada de abstração que torna a tarefa de alocação de memória independente da plataforma.
Basicamente, as funções de alocação têm seus protótipos definidos no cabeçalho padrão stdlib.h. São as funções:
- malloc
- realloc
- calloc
- free
As três primeiras implementam formas diferentes de alocar memória para o seu programa. A última visa liberar a memória previamente alocada para uso posterior. Estas funções usam um esquema muito interessante de alocação e gerenciamento de memória que poucos programadores C conhecem.