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:
|
|||
|
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é.