malloc

Aloca os blocos de memória.

Sintaxe

void *malloc(
   size_t size
);

Parâmetros

size
Bytes para alocar.

Valor Retornado

malloc retorna um ponteiro nulo para o espaço alocado ou NULL se não há memória suficiente disponível. Para retornar um ponteiro para um tipo diferente de void , use uma cast de tipo no valor de retorno. O espaço de armazenamento apontado pelo valor retornado é garantido para ser sutilmente alinhado para armazenamento de qualquer tipo de objeto que tenha um requisito de alinhamento menor ou igual ao alinhamento fundamental. (No Visual C++, o alinhamento fundamental é o alinhamento necessário para double um ou 8 bytes. No código destinado a plataformas de 64 bits, são 16 bytes.) Use para alocar armazenamento para objetos que têm um requisito de alinhamento maior, por exemplo, os tipos SSE e , e que são declarados usando onde é maior _aligned_malloc __m128 que __m256 __declspec(align( n )) n 8. Se size for 0, malloc alocará um item de comprimento zero no heap e retornará um ponteiro válido para esse item. Sempre verifique o retorno de malloc , mesmo que a quantidade de memória solicitada seja pequena.

Comentários

A função aloca um bloco de memória de pelo menos bytes size'* devido ao espaço necessário para informações de alinhamento malloc size bytes. The block may be larger than * e manutenção.

malloc define errno como se uma ENOMEM alocação de memória falhar ou se a quantidade de memória solicitada exceder _HEAP_MAXREQ . Para obter informações sobre esse e outros códigos de erro, errno consulte , , _doserrno _sys_errlist e _sys_nerr .

O código de inicialização malloc usa para alocar armazenamento para _environ as envp variáveis , e argv . As funções a seguir e suas contrapartes de caractere largo também chamam malloc .

A função C++ _set_new_mode define o novo modo de manipulador para malloc . O novo modo de manipulador indica se, em caso de falha, malloc é chamar a nova rotina de manipulador conforme definido por _set_new_handler . Por padrão, malloc não chama a nova rotina de manipulador em caso de falha ao alocar memória. Você pode substituir esse comportamento padrão para que, quando malloc o falhar para alocar memória, malloc chame a nova rotina do manipulador da mesma maneira que o new operador faz quando ele falha pelo mesmo motivo. Para substituir o padrão, chame _set_new_mode(1) no início do programa ou vincule com NEWMODE.OBJ (consulte Opções de link).

Quando o aplicativo é vinculado a uma versão de depuração das bibliotecas de tempo de execução do C, o é malloc resolvido para _malloc_dbg . Para obter mais informações sobre como o heap é gerenciado durante o processo de depuração, consulte CRT Debug Heap Details (Detalhes do heap de depuração CRT).

malloc está marcado como __declspec(noalias) e __declspec(restrict) ; isso significa que a função está garantida para não modificar variáveis globais e que o ponteiro retornado não tem um alias. Para obter mais informações, confira noalias e restrict.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar isso, consulte estado global no CRT.

Requisitos

Rotina Cabeçalho necessário
malloc <stdlib.h> e <malloc.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Bibliotecas

Todas as versões das bibliotecas em tempo de execução C.

Exemplo

// crt_malloc.c
// This program allocates memory with
// malloc, then frees the memory with free.

#include <stdlib.h>   // For _MAX_PATH definition
#include <stdio.h>
#include <malloc.h>

int main( void )
{
   char *string;

   // Allocate space for a path name
   string = malloc( _MAX_PATH );

   // In a C++ file, explicitly cast malloc's return.  For example,
   // string = (char *)malloc( _MAX_PATH );

   if( string == NULL )
      printf( "Insufficient memory available\n" );
   else
   {
      printf( "Memory space allocated for path name\n" );
      free( string );
      printf( "Memory freed\n" );
   }
}
Memory space allocated for path name
Memory freed

Confira também

Alocação de memória
calloc
free
realloc
_aligned_malloc