malloc, free, realloc, calloc, mallopt, mallinfo, mallinfo_heap, alloca, valloc, ou posix_memalign Subroutine
Propósito
Fornece um conjunto completo de alocação de memória, realocação, desalocação e ferramentas de gerenciamento de heap.
Bibliotecas
Biblioteca de compatibilidade Berkeley (libbsd.a)
Biblioteca C Padrão (libc.a)
APIs Subsistema Malloc
malloc
Sintaxe (malloc)
#include <stdlib.h>
size_t Size;
Descrição (malloc)
A subroutine malloc retorna um ponteiro para um bloco de memória de pelo menos o número de bytes especificados pelo parâmetro Tamanho . O bloco está alinhado para que possa ser usado para qualquer tipo de dado. Os resultados indefinidos ocorrem se o espaço atribuído pela subroutine malloc for superado.
Parâmetros (malloc)
| Item | Descrição |
|---|---|
| Tamanho | Especifica o tamanho, em bytes, de memória a alocar. |
Valores De Retorno (malloc)
Após a conclusão bem-sucedida, a subroutine malloc retorna um ponteiro para o espaço adequadamente alinhado para o armazenamento de qualquer tipo de objeto. Se o tamanho solicitado for 0, malloc retorna NULL em circunstâncias normais. No entanto, se o programa foi compilado com a macro definida _LINUX_SOURCE_COMPAT , malloc retorna um ponteiro válido para um espaço de tamanho 0.
Se a solicitação não puder ser satisfeita por qualquer motivo, a subroutine malloc retorna NULL.
Códigos De Erro (malloc)
| Item | Descrição |
|---|---|
| ENOMEM | O espaço de armazenamento insuficiente está disponível para atender a solicitação. |
grátis
Sintaxe (livre)
#include <stdlib.h>
void * Pointer;
Descrição (livre)
A subroutine free desaloque um bloco de memória alocado anteriormente pelo subsistema malloc . Resultados indefinidos ocorrem se o parâmetro Pointer não for um endereço que tenha sido alocado anteriormente pelo subsistema malloc ou se o parâmetro Pointer já foi dealocado. Se o parâmetro Pointer for NULL, nenhuma ação ocorre.
Parâmetros (grátis)
| Item | Descrição |
|---|---|
| Ponteiro | Especifica um ponteiro para o espaço alocado anteriormente pelo subsistema malloc . |
Valores De Retorno (grátis)
A subroutine free não retorna um valor. Após a conclusão bem-sucedida com argumentos não nulos, a subroutine realloc retorna um ponteiro para o espaço alocado (possivelmente movido). Se o parâmetro Tamanho for 0 e o parâmetro Pointer não for nulo, nenhuma ação ocorre.
Códigos De Erro (grátis)
A subroutine free não configura errno.
realloc (livre)
Sintaxe (realloc)
Descrição (realloc)
A subroutina realloc altera o tamanho do objeto de memória apontado pelo parâmetro Pointer para o número de bytes especificados pelo parâmetro Size . O Pointer deve apontar para um endereço retornado por uma rotina de alocação de subsistema malloc , e não deve ter sido previamente dealocado. Resultados indefinidos ocorrem se Pointer não atende a esses critérios.
O conteúdo do objeto de memória permanece inalterado em até o menor dos tamanhos antigos e novos. Se o objeto de memória atual não puder ser ampliado para satisfazer a solicitação, a subroutine realloc adquire um novo objeto de memória e copia os dados existentes para o novo espaço. O objeto de memória antiga é então liberado. Se nenhum objeto de memória puder ser adquirido para acomodar a solicitação, o objeto permanece inalterado.
Se o parâmetro Pointer for nulo, a subroutina realloc é equivalente a uma subroutina de malloc do mesmo tamanho.
Se o parâmetro Tamanho for 0 e o parâmetro Pointer não for nulo, a subroutina realloc é equivalente a uma subroutina free do mesmo tamanho.
Parâmetros (realloc)
| Item | Descrição |
|---|---|
| Ponteiro | Especifica um Pointer ao espaço alocado anteriormente pelo subsistema malloc . |
| Tamanho | Especifica o novo tamanho, em bytes, do objeto de memória. |
Valores De Retorno (realloc)
Após a conclusão bem-sucedida com argumentos não nulos, a subroutine realloc retorna um ponteiro para o espaço alocado (possivelmente movido). Se o parâmetro Tamanho for 0 e o parâmetro Pointer não for nulo, o comportamento de retorno é equivalente ao da subroutine free . Se o parâmetro Pointer for nulo e o parâmetro Size não for zero, o comportamento de retorno é equivalente ao da subroutine malloc .
Códigos De Erro (realloc)
| Item | Descrição |
|---|---|
| ENOMEM | O espaço de armazenamento insuficiente está disponível para atender a solicitação. |
calloc
Sintaxe (calloc)
#include <stdlib.h>
Descrição (calloc)
A sub-rotina calloc aloca espaço para uma matriz que contém os objetos NumberOfElements. O parâmetro ElementSize especifica o tamanho de cada elemento em bytes.. Depois que a matriz é alocada, todos os bits são inicializados a 0.
A ordem e a contiguidade de armazenamento alocadas por chamadas sucessivas para a subroutine calloc é não especificado. O ponteiro retornou pontos para o primeiro endereço de byte (mais baixo) do espaço alocado. O espaço alocado está alinhado para que ele possa ser usado para qualquer tipo de dado. Os resultados indefinidos ocorrem se o espaço atribuído pela subroutine calloc for superado.
Parâmetros (calloc)
| Item | Descrição |
|---|---|
| NumberOfElements | Especifica o número de elementos na matriz. |
| ElementSize | Especifica o tamanho, em bytes, de cada elemento na matriz. |
Valores De Retorno (calloc)
Após a conclusão bem-sucedida, o subroutine calloc retorna um ponteiro para a matriz alocada, zero-inicializada. Se o tamanho solicitado for 0, o subroutine calloc retorna NULL em circunstâncias normais. No entanto, se o programa foi compilado com a macro _LINUX_SOURCE_COMPAT definida, o subroutine calloc retorna um ponteiro válido para um espaço de tamanho 0.
Se a solicitação não puder ser satisfeita por qualquer motivo, o subroutine calloc retorna NULL.
Códigos De Erro (calloc)
| Item | Descrição |
|---|---|
| ENOMEM | O espaço de armazenamento insuficiente está disponível para atender a solicitação. |
mallopt
Sintaxe (mallopt)
Descrição (mallopt)
| Comando | Valor | Efeito |
|---|---|---|
| M_MXFAST | 0 | Se chamado antes de qualquer outro subroutine de subsistema malloc , isso possibilita a política de alocação padrão para o processo. |
| M_MXFAST | 1 | Se chamado antes de qualquer outra sub-rotina do subsistema malloc , isso ativa a política de alocação 3.1 para o processo. |
| M_DISCLAIM | 0 | Se chamado enquanto o Allocador Padrão estiver ativado, toda a memória livre no heap do processo é desativada. |
| M_MALIGN | N | Se chamado em tempo de execução, configura o alinhamento de alocação malloc padrão para o valor N. O valor N deve ser uma potência de 2 (maior ou igual ao tamanho de um ponteiro). |
Parâmetros (mallopt)
| Item | Descrição |
|---|---|
| Comando | Especifica o comando mallopt a ser executado. |
| Valor | Especifica o tamanho de cada elemento na matriz. |
Valores De Retorno (mallopt)
Após a conclusão bem-sucedida, a subroutine mallopt retorna 0. Caso contrário, 1 é devolvido. Se um alinhamento inválido for solicitado (um que não seja uma potência de 2), mallopt falhar com um valor de retorno de 1, embora as chamadas subsequentes para malloc sejam inafetadas e continuem a fornecer o valor de alinhamento de antes da chamada falha mallopt .
Códigos De Erro (mallopt)
A subroutine mallopt não configura errno.
mallinfo
Sintaxe (mallinfo)
#include <malloc.h>
#include <stdlib.h>
Descrição (mallinfo)
A subroutine mallinfo pode ser usada para obter informações sobre o heap gerenciado pelo subsistema malloc .
Valores De Retorno (mallinfo)
O subroutine mallinfo retorna uma estrutura do tipo struct mallinfo, preenchido com informações relevantes e estatísticas sobre o heap. O conteúdo desta estrutura pode ser interpretado utilizando-se a definição de struct mallinfo no arquivo /usr/include/malloc.h .
Códigos De Erro (mallinfo)
A subroutine mallinfo não configura errno.
mallinfo_heap
Sintaxe (mallinfo_heap)
#include <malloc.h>
#include <stdlib.h>
Descrição (mallinfo_heap)
Em um contexto de multiheap, a subroutina mallinfo_heap pode ser usada para obter informações sobre um heap específico gerenciado pelo subsistema malloc .
Parâmetros (mallinfo_heap)
| Item | Descrição |
|---|---|
| Heap | Especifica qual heap para consulta. |
Valores De Retorno (mallinfo_heap)
mallinfo_heap retorna uma estrutura do tipo struct mallinfo_heap, preenchido com informações relevantes e estatísticas sobre o heap. O conteúdo desta estrutura pode ser interpretado utilizando-se a definição de struct mallinfo_heap no arquivo /usr/include/malloc.h .
Códigos De Erro (mallinfo_heap)
A subroutine mallinfo_heap não configura errno.
aloca
Sintaxe (alloca)
#include <stdlib.h>
int Size;
Descrição (alloca)
O subroutine alloca retorna um ponteiro para um bloco de memória de pelo menos o número de bytes especificados pelo parâmetro Tamanho . O espaço é alocado a partir do quadro de pilha do chamador e é liberado automaticamente quando o chamado subroutine retorna.
Se a sub-rotina alloca for usada em código compilado com o compilador IBM® XL C for AIX® , #pragma alloca deverá ser incluído no código-fonte antes de referenciar a sub-rotina alloca Como alternativa, é possível incluir o sinalizador do compilador -ma ou o arquivo de cabeçalho <alloca.h>
Parâmetros (alloca)
| Item | Descrição |
|---|---|
| Tamanho | Especifica o tamanho, em bytes, de memória a alocar. |
Valores De Retorno (alloca)
A subroutine alloca retorna um ponteiro para o espaço do tamanho solicitado.
Códigos De Erro (alloca)
A subroutine alloca não configura errno.
valloc
Sintaxe (valloc)
#include <stdlib.h>
size_t Size;
Descrição (valloc)
A sub-rotina valloc é suportada como uma interface de compatibilidade na Berkeley Compatibility Library (libbsd.a), bem como em libc.a. A subroutina valloc tem o mesmo efeito que malloc, exceto que a memória alocada esteja alinhada a um múltiplo do valor retornado por sysconf (_ SC_PAGESIZE).
Parâmetros (valloc)
| Item | Descrição |
|---|---|
| Tamanho | Especifica o tamanho, em bytes, de memória a alocar. |
Valores De Retorno (valloc)
Após a conclusão bem-sucedida, o subroutine valloc retorna um ponteiro para um objeto de memória que é Tamanho bytes de comprimento, alinhado a um limite de página. Os resultados indefinidos ocorrem se o espaço atribuído pela subroutine valloc for superado.
Se o pedido não puder ser satisfeito por qualquer motivo, valloc retorna NULL.
Códigos De Erro (valloc)
| Item | Descrição |
|---|---|
| ENOMEM | O espaço de armazenamento insuficiente está disponível para atender a solicitação. |
posix_memalign
Sintaxe (posix_memalign)
#include <stdlib.h>
void ** Pointer2Pointer;
size_t Align;
size_t Size;
Descrição (posix_memalign)
A subroutina posix_memalign aloca Size bytes de memória alinhados em um limite especificado por Align. O endereço desta memória é armazenado em Pointer2Pointer.
Parâmetros (posix_memalign)
| Item | Descrição |
|---|---|
| Pointer2Pointer | Especifica o local no qual o endereço deve ser copiado. |
| Alinhar | Especifica o alinhamento da memória alocada, em bytes. O parâmetro Align deve ser um power-of-two múltiplo do tamanho de um ponteiro. |
| Tamanho | Especifica o tamanho, em bytes, de memória a alocar. |
Valores De Retorno (posix_memalign)
Após a conclusão bem-sucedida, posix_memalign retorna 0. Caso contrário, um número de erro é retornado para indicar o erro.
Códigos De Erro (posix_memalign)
| Item | Descrição |
|---|---|
| EINVAL | O valor de Align não é um power-of-two múltiplo do tamanho de um ponteiro. |
| ENOMEM | O espaço de armazenamento insuficiente está disponível para atender a solicitação. |