malloc

alloue des blocs de mémoire.

void *malloc(
   size_t size 
);

Paramètres

  • size
    octets à allouer.

Valeur de retour

malloc retourne un pointeur void à l'espace alloué ou à NULL si la mémoire disponible est insuffisante.Pour retourner un pointeur vers un type autre qu' void, utilisez un cast de type sur la valeur de retour.Espace disque désigné par la valeur de retour est obligatoirement aligné pour le stockage d'un type d'objet.Si la taille est 0, malloc alloue un élément de longueur zéro dans le tas et retourne un pointeur non valide pour cet élément.Vérifiez toujours le retour d' malloc, même si la quantité de mémoire demandée est faible.

Notes

la fonction d' malloc alloue un bloc de mémoire au moins d'octets d' size .Le bloc peut être plus grand que des octets d' size en raison de l'espace requis pour les informations d'inscription et de maintenance.

malloc définit errno à ENOMEM si une allocation de mémoire échoue ou si la quantité de mémoire demandée dépasse _HEAP_MAXREQ.Pour plus d'informations sur cette et d'autres codes d'erreur, consultez errno, _doserrno, _sys_errlist, et _sys_nerr.

Le code de démarrage utilise malloc pour allouer un stockage pour _environ, envp, les variables d' argv .Les fonctions suivantes et leurs équivalents à caractère élargi appellent également malloc:

calloc

fscanf

_getw

setvbuf

fonctions de _exec

fseek

_popen

fonctions de _spawn

fgetc

fsetpos

printf

_strdup

_fgetchar

_fullpath

putc

système

fgets

fwrite

putchar

_tempnam

fprintf

getc

_putenv

ungetc

fputc

getchar

met

vfprintf

_fputchar

_getcwd

_putw

vprintf

fputs

_getdcwd

scanf

 

fread

obtient

_searchenv

 

La fonction C++ _set_new_mode définit le nouveau mode de gestionnaire pour malloc.Le nouveau mode de gestionnaire indique si, en cas de échec, malloc est d'appeler la nouvelle routine de gestionnaire comme définie par _set_new_handler.Par défaut, malloc n'appelle pas la nouvelle routine de gestionnaire en cas de échec pour allouer de la mémoire.Vous pouvez substituer ce comportement par défaut afin que, lorsque malloc n'allouent pas la mémoire, malloc appelle la nouvelle routine de gestionnaire de la même façon que l'opérateur d' new nécessaire si elle échoue pour la même raison.Pour substituer la valeur par défaut, appelez

_set_new_mode(1)

tôt dans votre programme, ou lien avec NEWMODE.OBJ (consultez Options de lien).

Lorsque l'application est liée à une version debug des bibliothèques runtime C, malloc le résout vers _malloc_dbg.Pour plus d'informations sur la façon dont le tas est exécuté pendant le processus de débogage, consultez Le tas de débogage CRT.

malloc est __declspec(noalias) marqué et __declspec(restrict), ce qui signifie que la fonction est garantie ne pas modifier les variables globales, et que le pointeur retourné pas alias.Pour plus d'informations, consultez noalias et le restreignez.

Configuration requise

routine

en-tête requis

malloc

<stdlib.h> et <malloc.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

bibliothèques

toutes les versions de Bibliothèques runtime C.

Exemple

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

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

Voir aussi

Référence

Allocation de mémoire

calloc

free

realloc