EOF
Développer Réduire
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

malloc

alloue des blocs de mémoire.

void *malloc(
   size_t size 
);
size

octets à allouer.

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.

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:

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.

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.

// 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" );
   }
}
espace mémoire alloué pour le nom de chemin d'accès
mémoire libérée

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

Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
© 2013 Microsoft. Tous droits réservés.