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>
void *malloc (Size)
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 free (Pointer)
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)

#include <stdlib.h>
void *realloc (Pointer, Size)
void *Pointer;
size_t Size;

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>
void *calloc (NumberOfElements, ElementSize)
size_t NumberOfElements;
size_t ElementSize;

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)

#include <malloc.h>
#include <stdlib.h>
int mallopt (Command, Value)
int Command;
int Value;

Descrição (mallopt)

A subroutine mallopt é fornecida para compatibilidade de nível de origem com a subroutina do Sistema V malloc . A subroutine mallopt suporta os seguintes comandos:
Tabela 1. Comandos e efeitos
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>
struct mallinfo mallinfo();

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>
struct mallinfo_heap mallinfo_heap (Heap)
int Heap;

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>
char *alloca (Size)
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>
void *valloc (Size)
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>
int posix_memalign(void **Pointer2Pointer, Align, Size)
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.