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:
|
|||
|
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.