Partilhar via


malloc

Aloca blocos de memória.

void *malloc(
   size_t size 
);

Parâmetros

  • size
    Bytes para alocar.

Valor de retorno

mallocRetorna um ponteiro nulo para o espaço alocado ou NULL se não houver memória suficiente disponível.Para retornar um ponteiro para um tipo diferente de void, use um tipo de projeção no valor de retorno.O espaço de armazenamento apontado pelo valor de retorno é garantido ser devidamente alinhado para o armazenamento de qualquer tipo de objeto.Se o tamanho é 0, malloc aloca um item de comprimento zero no heap e retorna um ponteiro válido para esse item.Verifique sempre o retorno do malloc, mesmo que a quantidade de memória solicitada é pequena.

Comentários

O malloc função aloca um bloco de memória de pelo menos size bytes.O bloco pode ser maior que size bytes por causa do espaço necessário para o alinhamento e a manutenção de informações.

mallocdefine errno para ENOMEM se uma alocação de memória falhar ou se a quantidade de memória solicitada excede _HEAP_MAXREQ.Para obter informações sobre este e outros códigos de erro, consulte errno, _doserrno, _sys_errlist e _sys_nerr.

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

calloc

fscanf

_getw

setvbuf

funções de _exec

fseek

_popen

funções de _spawn

fgetc

fsetpos

printf

_strdup

_fgetchar

_fullpath

putc

sistema

fgets

Fwrite

putchar

_tempnam

fprintf

getc

_putenv

ungetc

fputc

getchar

coloca

vfprintf

_fputchar

_getcwd

_putw

vprintf

fputs

_getdcwd

scanf

 

fRead

Obtém

_searchenv

 

O C++ _set_new_mode função define o novo modo de manipulador para malloc.O novo modo de manipulador indica se deve, em caso de falha, malloc é chamar a rotina manipuladora de novo conforme definido por _set_new_handler.Por padrão, malloc não chama a rotina manipuladora de novo em caso de falha ao alocar memória.Você pode substituir esse comportamento padrão para que, quando malloc Falha ao alocar memória, malloc chama a rotina manipuladora de novo na mesma maneira que o new operador oferece quando falhar pelo mesmo motivo.Para substituir o padrão, chamar.

_set_new_mode(1)

no início do seu programa, ou o vínculo com o NEWMODE.OBJ (see Opções de link).

Quando o aplicativo está vinculado com uma versão de depuração das bibliotecas de tempo de execução C, malloc resolve para _malloc_dbg.Para obter mais informações sobre como a pilha é gerenciada durante o processo de depuração, consulte A pilha de depuração CRT.

mallocestá marcado como __declspec(noalias) e __declspec(restrict), que significa que a função é garantida que não modificar variáveis globais, e que o ponteiro retornado não é com alias.Para obter mais informações, consulte noalias e restringir.

Requisitos

Rotina

Cabeçalho necessário

malloc

<stdlib.h> e <malloc.h>

Para obter informações adicionais de compatibilidade, consulte compatibilidade na introdução.

Bibliotecas

Todas as versões da bibliotecas de 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" );
   }
}
  

Equivalência do .NET Framework

Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Alocação de memória

calloc

livre

possível realocar