Share via


malloc

Asigna los bloques de memoria.

void *malloc(
   size_t size 
);

Parámetros

  • size
    Bytes para asignar.

Valor devuelto

malloc devuelve un puntero vacío al espacio asignado o a NULL si la memoria disponible no es suficiente.Para devolver un puntero a un tipo distinto de void, utilice una conversión de tipo del valor devuelto.El espacio de almacenamiento designado por el valor devuelto se garantiza que sea sencilla alineadas para el almacenamiento de cualquier tipo de objeto.Si el tamaño es 0, malloc asigna un elemento de longitud cero en la pila y devuelve un puntero válido a ese elemento.Compruebe siempre la devolución de malloc, incluso si la cantidad de memoria solicitada es pequeña.

Comentarios

La función de malloc asigna un bloque de memoria al menos de bytes de size .El bloque puede ser mayor que los bytes de size debido a espacio requerido para la información de alineación y mantenimiento.

conjuntos errno demalloc a ENOMEM si se produce una asignación de memoria o si la cantidad de memoria solicitada supera _HEAP_MAXREQ.Para obtener información sobre estos y otros códigos de error, vea errno, _doserrno, _sys_errlist, y _sys_nerr.

El código de inicio utiliza malloc para asignar el almacenamiento para _environ, envp, y las variables de argv .Las siguientes funciones y sus homólogos de carácter ancho también llama malloc:

calloc

fscanf

_getw

setvbuf

funciones de _exec

fseek

_popen

funciones 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

obtiene

_searchenv

 

La función de C++ _set_new_mode establece el nuevo modo de controlador para malloc.El nuevo modo de controlador indica si, en el error, malloc es llamar a la nueva rutina de controlador como lo establece _set_new_handler.De forma predeterminada, malloc no llama a la nueva rutina de controlador en el error asignar memoria.Puede invalidar este comportamiento predeterminado para que, cuando malloc no puede para asignar memoria, malloc llame a la nueva rutina del controlador de la misma manera que el operador de new cuando falla por la misma razón.Para reemplazar el valor predeterminado, llame a

_set_new_mode(1)

al principio del programa, o vínculo con NEWMODE.OBJ (vea Opciones de vínculo).

Cuando la aplicación se vincula con una versión de depuración de las bibliotecas en tiempo de ejecución de C, malloc resuelve a _malloc_dbg.Para obtener más información sobre cómo la pila se administra durante el proceso de depuración, vea El montón de depuración de CRT.

malloc es __declspec(noalias) marcado y __declspec(restrict), lo que significa que la función está garantizada para no modificar variables globales, y que el puntero devuelto no es con alias.Para obtener más información, vea noalias y limitado.

Requisitos

rutina

Encabezado necesario

malloc

<stdlib.h> y <malloc.h>

Para obtener información adicional de compatibilidad, vea compatibilidad en la Introducción.

bibliotecas

todas las versiones de Bibliotecas en tiempo de ejecución de C.

Ejemplo

// 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" );
   }
}
  

Equivalente en .NET Framework

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

Vea también

Referencia

Asignación de memoria

calloc

free

realloc