Partilhar via


malloc

Aloca blocos de memória.

void *malloc(
   size_t size 
);

Parâmetros

  • size
    Bytes para alocar.

Valor de retorno

malloc Retorna 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 convertido no valor retornado. O espaço de armazenamento apontado pelo valor retornado é garantido a ser alinhado adequadamente para o armazenamento de qualquer tipo de objeto.Se dimensionar for 0, malloc aloca um item de comprimento zero no heap e retorna um ponteiro válido para esse item. Sempre verifique o retorno do malloc, mesmo se a quantidade de memória solicitada for pequena.

Comentários

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

In Visual C++ 2005, malloc Define errno para ENOMEM Se falhar uma alocação de memória ou se exceder a quantidade de memória solicitada _HEAP_MAXREQ. Para obter informações sobre esse e outros códigos de erro, consulte errno, _doserrno, _sys_errlist e _sys_nerr.

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

calloc

fscanf

_getw

setvbuf

funções _exec

fseek

_popen

funções _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

 

The C++ _set_new_mode função define o modo de manipulador de novo para malloc. O novo modo de manipulador indica se, no caso de falha, malloc é telefonar a rotina manipuladora de novo sistema autônomo definido pelo _set_new_handler.Por padrão, malloc não telefonar a rotina manipuladora de novo no 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 de manipulador de novo na mesma forma que o new operador não quando ele falhar pelo mesmo motivo. Para substituir o padrão, ligue para

_set_new_mode(1)

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

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

malloc está marcado como __declspec(noalias) e __declspec(restrict), que significa que a função tem a garantia não modificar variáveis global e que o ponteiro retornado não é com alias. Para obter mais informações, consulte noalias and restringir.

Requisitos

Rotina

Cabeçalho necessário

malloc

<stdlib.h> e <malloc.h>

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

Bibliotecas

Todas as versões do C em time de execução bibliotecas.

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

Equivalente do NET Framework

Não aplicável. Para telefonar 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

disponível

realocar