malloc

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Asigna bloques de memoria.

void *malloc(  
   size_t size   
);  

Parámetros

size
Bytes para asignar.

mallocDevuelve un puntero nulo para el espacio asignado, o NULL si hay suficiente memoria disponible. Para devolver un puntero a un tipo distinto de void, utilice un conversión de tipo en el valor devuelto. Se garantiza que el espacio de almacenamiento que apunta el valor devuelto como correctamente alineado para almacenar cualquier tipo de objeto que tiene un requisito alineación o igual a la de la alineación fundamental. (En Visual C++, la alineación fundamental es la alineación que se requiere para una double, u 8 bytes. Código destinado a plataformas de 64 bits, es de 16 bytes.) Utilice _aligned_malloc para asignar el almacenamiento para objetos que tienen un requisito de alineación más grande, por ejemplo, los tipos de SSE __m128 y __m256y los tipos que se declaran mediante __declspec(align(``n``)) donde n es mayor que 8. Si size es 0, malloc asigna un elemento de longitud cero en el montón y devuelve un puntero válido para ese elemento. Compruebe siempre el valor devuelto de malloc, incluso si la cantidad de memoria solicitada es pequeña.

El malloc función asigna un bloque de memoria de al menos size bytes. El bloque puede ser mayor que size bytes debido al espacio necesario para obtener información de alineación y mantenimiento.

mallocestablece errno a ENOMEM si se produce un error en una asignación de memoria o si la cantidad de memoria solicitada supera _HEAP_MAXREQ. Para obtener información sobre este y otros códigos de error, consulte errno, _doserrno, _sys_errlist y _sys_nerr.

El código de inicio utiliza malloc para asignar el almacenamiento para el _environ, envp, y argv las variables. Las siguientes funciones y sus homólogos de caracteres anchos también llamar a malloc.

callocfscanf_getwsetvbuf)
funciones _execfseek_popen_spawn (funciones)
fgetcfsetposPrintf_strdup
_fgetchar_fullpathputcsistema
fgetsfwriteputchar_tempnam
fprintfgetc_putenvungetc
fputcGetCharcolocavfprintf
_fputchar_getcwd_putwvprintf
fputs_getdcwdscanf
freadObtiene_searchenv

C++ _set_new_mode función establece el nuevo modo de controlador para malloc. El nuevo modo de controlador indica si, en caso de error, malloc es llamar a la rutina del controlador nuevo según lo establecido por _set_new_handler. De forma predeterminada, malloc no llama a la rutina del controlador nuevo en caso de error al asignar memoria. Puede invalidar este comportamiento predeterminado para que, cuando malloc no puede asignar memoria, malloc llama a la rutina de controlador nuevo en la misma forma en que el new operador hace cuando se produce un error por la misma razón. Para invalidar el valor predeterminado, llame a

_set_new_mode(1)  

temprano en el programa o el vínculo con NEWMODE. OBJ (consulte opciones de vínculo).

Cuando la aplicación se vincula con una versión de depuración de las bibliotecas de tiempo de ejecución de C malloc se resuelve como _malloc_dbg. Para obtener más información acerca de cómo se administra el montón durante el proceso de depuración, consulte detalles del montón de depuración de CRT.

mallocse marca __declspec(noalias) y __declspec(restrict); Esto significa que se garantiza que la función no puede modificar las variables globales y que el puntero devuelto no es un alias. Para obtener más información, consulte noalias y restringir.

RutinaEncabezado necesario
malloc<stdlib.h>y<malloc.h></malloc.h></stdlib.h>

Para obtener más información sobre compatibilidad, vea Compatibilidad.

Todas las versiones de las bibliotecas en tiempo de ejecución de C.

// 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  

No es aplicable. Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.

Asignación de memoria
calloc
liberar
realloc
_aligned_malloc

Mostrar: