mallocmalloc

Asigna bloques de memoria.Allocates memory blocks.

SintaxisSyntax

void *malloc(
   size_t size
);

ParámetrosParameters

sizesize
Bytes para asignar.Bytes to allocate.

Valor devueltoReturn Value

malloc devuelve un puntero void al espacio asignado, o null si no hay suficiente memoria disponible.malloc returns a void pointer to the allocated space, or NULL if there is insufficient memory available. Para devolver un puntero a un tipo distinto de void , use una conversión de tipo en el valor devuelto.To return a pointer to a type other than void, use a type cast on the return value. Se garantiza que el espacio de almacenamiento que apunta el valor devuelto está correctamente alineado para almacenar cualquier tipo de objeto que tenga un requisito de alineación inferior o igual al de la alineación básica.The storage space pointed to by the return value is guaranteed to be suitably aligned for storage of any type of object that has an alignment requirement less than or equal to that of the fundamental alignment. (En Visual C++, la alineación fundamental es la alineación necesaria para double u 8 bytes.(In Visual C++, the fundamental alignment is the alignment that's required for a double, or 8 bytes. En el código que tiene como destino las plataformas de 64 bits, es de 16 bytes). Use _aligned_malloc para asignar almacenamiento para objetos que tienen un requisito de alineación mayor; por ejemplo, los tipos SSE __m128 y __m256 , y los tipos que se declaran con, __declspec(align( n )) donde n es mayor que 8.In code that targets 64-bit platforms, it’s 16 bytes.) Use _aligned_malloc to allocate storage for objects that have a larger alignment requirement—for example, the SSE types __m128 and __m256, and types that are declared by using __declspec(align( n )) where n is greater than 8. Si el tamaño es 0, malloc asigna un elemento de longitud cero en el montón y devuelve un puntero válido a ese elemento.If size is 0, malloc allocates a zero-length item in the heap and returns a valid pointer to that item. Compruebe siempre el valor devuelto de malloc, incluso si la cantidad de memoria solicitada es pequeña.Always check the return from malloc, even if the amount of memory requested is small.

ObservacionesRemarks

La función malloc asigna un bloque de memoria de al menos el tamaño de los bytes.The malloc function allocates a memory block of at least size bytes. El bloque puede ser mayor que el tamaño de los bytes debido al espacio necesario para la información de alineación y mantenimiento.The block may be larger than size bytes because of the space that's required for alignment and maintenance information.

malloc establece errno en ENOMEM si se produce un error de asignación de memoria o si la cantidad de memoria solicitada supera _HEAP_MAXREQ.malloc sets errno to ENOMEM if a memory allocation fails or if the amount of memory requested exceeds _HEAP_MAXREQ. Para obtener información sobre este y otros códigos de error, consulte errno, _doserrno, _sys_errlist y _sys_nerr.For information about this and other error codes, see errno, _doserrno, _sys_errlist, and _sys_nerr.

El código de inicio usa malloc para asignar almacenamiento para las variables _environ, envpy argv .The startup code uses malloc to allocate storage for the _environ, envp, and argv variables. Las siguientes funciones y sus homólogos de caracteres anchos también llaman a malloc.The following functions and their wide-character counterparts also call malloc.

La función _set_new_mode de C++ establece el nuevo modo de controlador para malloc.The C++ _set_new_mode function sets the new handler mode for malloc. El nuevo modo de controlador indica si, en caso de error, malloc es llamar a la rutina del nuevo controlador tal y como se establece en _set_new_handler.The new handler mode indicates whether, on failure, malloc is to call the new handler routine as set by _set_new_handler. De forma predeterminada, malloc no llama a la rutina del nuevo controlador en caso de error al asignar memoria.By default, malloc does not call the new handler routine on failure to allocate memory. Puede invalidar este comportamiento predeterminado para que, cuando malloc no pueda asignar memoria, malloc llame a la rutina del nuevo controlador de la misma manera que el new operador cuando se produce un error por la misma razón.You can override this default behavior so that, when malloc fails to allocate memory, malloc calls the new handler routine in the same way that the new operator does when it fails for the same reason. Para invalidar el valor predeterminado, llame al _set_new_mode(1) principio en el programa o vincúlelo con NEWMODE. OBJ (vea Opciones de vínculo).To override the default, call _set_new_mode(1) early in your program, or link with NEWMODE.OBJ (see Link Options).

Cuando la aplicación se vincula con una versión de depuración de las bibliotecas en tiempo de ejecución de C, malloc se resuelve como _malloc_dbg.When the application is linked with a debug version of the C run-time libraries, malloc resolves to _malloc_dbg. Para obtener más información sobre cómo se administra el montón durante el proceso de depuración, vea Detalles del montón de depuración de CRT.For more information about how the heap is managed during the debugging process, see CRT Debug Heap Details.

malloc está marcado __declspec(noalias) como y __declspec(restrict) ; Esto significa que se garantiza que la función no modifica las variables globales y que el puntero devuelto no tiene alias.malloc is marked __declspec(noalias) and __declspec(restrict); this means that the function is guaranteed not to modify global variables, and that the pointer returned is not aliased. Para obtener más información, consulte noalias y restrict.For more information, see noalias and restrict.

De forma predeterminada, el ámbito de este estado global de esta función es la aplicación.By default, this function's global state is scoped to the application. Para cambiar esto, vea estado global en CRT.To change this, see Global state in the CRT.

RequisitosRequirements

RutinaRoutine Encabezado necesarioRequired header
mallocmalloc <stdlib.h> y <malloc.h><stdlib.h> and <malloc.h>

Para obtener información adicional sobre compatibilidad, consulte Compatibilidad.For additional compatibility information, see Compatibility.

BibliotecasLibraries

Todas las versiones de las bibliotecas en tiempo de ejecución de C.All versions of the C run-time libraries.

EjemploExample

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

Consulte tambiénSee also

Asignación de memoriaMemory Allocation
calloccalloc
ningúnfree
reallocrealloc
_aligned_malloc_aligned_malloc