malloc, free, realloc, calloc, mallopt, mallinfo, mallinfo_heap, alloca, valloc ou posix_memalign Sous-routine

Objectif

Fournit un ensemble complet d'outils d'allocation de mémoire, de réallocation, de désallocation et de gestion de segment de mémoire.

Bibliothèques

Bibliothèque de compatibilité Berkeley (libbsd.a)

Bibliothèque C standard (libc.a)

API du sous-système Malloc

malloc

Syntaxe (malloc)

#include <stdlib.h>
void *malloc (Size)
size_t Size;

Description (malloc)

La sous-routine malloc renvoie un pointeur vers un bloc de mémoire d'au moins le nombre d'octets spécifié par le paramètre Size . Le bloc est aligné de sorte qu'il puisse être utilisé pour n'importe quel type de données. Des résultats non définis se produisent si l'espace affecté par la sous-routine malloc est saturé.

Paramètres (malloc)

Article Descriptif
Taille Indique la taille, en octets, de la mémoire à allouer.

Valeurs de retour (malloc)

Une fois l'opération terminée, la sous-routine malloc renvoie un pointeur vers l'espace correctement aligné pour le stockage de tout type d'objet. Si la taille demandée est 0, malloc renvoie NULL dans des circonstances normales. Toutefois, si le programme a été compilé avec la macro _LINUX_SOURCE_COMPAT définie, malloc renvoie un pointeur valide vers un espace de taille 0.

Si la demande ne peut pas être satisfaite pour une raison quelconque, la sous-routine malloc renvoie NULL.

Codes d'erreur (malloc)

Article Descriptif
ENOMEM L'espace de stockage disponible est insuffisant pour traiter la demande.

libérer

Syntaxe (libre)

#include <stdlib.h>
void free (Pointer)
void * Pointer;

Description (libre)

La sous-routine free libère un bloc de mémoire précédemment alloué par le sous-système malloc . Des résultats non définis se produisent si le paramètre Pointeur n'est pas une adresse précédemment allouée par le sous-système malloc ou si le paramètre Pointeur a déjà été libéré. Si le paramètre Pointeur est NULL, aucune action n'est effectuée.

Paramètres (libre)

Article Descriptif
Pointeur Indique un pointeur vers l'espace précédemment alloué par le sous-système malloc .

Valeurs de retour (gratuit)

La sous-routine free ne renvoie pas de valeur. Une fois terminée avec des arguments différents de zéro, la sous-routine realloc renvoie un pointeur vers l'espace alloué (éventuellement déplacé). Si le paramètre Taille est 0 et que le paramètre Pointeur n'est pas null, aucune action n'est effectuée.

Codes d'erreur (gratuit)

La sous-routine free ne définit pas errno.

realloc (libre)

Syntaxe (realloc)

#include <stdlib.h>
void *realloc (Pointer, Size)
void *Pointer;
size_t Size;

Description (realloc)

La sous-routine realloc remplace la taille de l'objet mémoire désigné par le paramètre Pointeur par le nombre d'octets spécifié par le paramètre Taille . Le pointeur doit pointer vers une adresse renvoyée par une routine d'allocation de sous-système malloc et ne doit pas avoir été précédemment désallouée. Des résultats non définis se produisent si Pointeur ne répond pas à ces critères.

Le contenu de l'objet mémoire reste inchangé jusqu'à la plus petite des anciennes et des nouvelles tailles. Si l'objet mémoire en cours ne peut pas être agrandi pour répondre à la demande, la sous-routine realloc acquiert un nouvel objet mémoire et copie les données existantes dans le nouvel espace. L'ancien objet mémoire est alors libéré. Si aucun objet mémoire ne peut être acquis pour répondre à la demande, l'objet reste inchangé.

Si le paramètre Pointeur est null, la sous-routine realloc est équivalente à une sous-routine malloc de même taille.

Si le paramètre Size est 0 et que le paramètre Pointer n'est pas null, la sous-routine realloc est équivalente à une sous-routine free de même taille.

Paramètres (realloc)

Article Descriptif
Pointeur Indique un pointeur vers l'espace précédemment alloué par le sous-système malloc .
Taille Indique la nouvelle taille, en octets, de l'objet mémoire.

Valeurs de retour (realloc)

Une fois terminée avec des arguments différents de zéro, la sous-routine realloc renvoie un pointeur vers l'espace alloué (éventuellement déplacé). Si le paramètre Size est 0 et que le paramètre Pointer n'est pas null, le comportement de retour est équivalent à celui de la sous-routine free . Si le paramètre Pointeur est null et que le paramètre Taille est différent de zéro, le comportement du retour est équivalent à celui de la sous-routine malloc .

Codes d'erreur (realloc)

Article Descriptif
ENOMEM L'espace de stockage disponible est insuffisant pour traiter la demande.

calloc

Syntaxe (calloc)

#include <stdlib.h>
void *calloc (NumberOfElements, ElementSize)
size_t NumberOfElements;
size_t ElementSize;

Description (calloc)

Le sous-programme calloc alloue de l'espace pour un tableau contenant les objets NumberOfElements. Le paramètre ElementSize spécifie la taille de chaque élément en octets. Une fois le tableau alloué, tous les bits sont initialisés à 0.

L'ordre et la contiguïté de la mémoire allouée par des appels successifs à la sous-routine calloc ne sont pas spécifiés. Le pointeur a renvoyé des points sur la première adresse (la plus basse) octet de l'espace alloué. L'espace alloué est aligné de sorte qu'il puisse être utilisé pour n'importe quel type de données. Des résultats non définis se produisent si l'espace affecté par la sous-routine calloc est dépassé.

Paramètres (calloc)

Article Descriptif
NumberOfElements Indique le nombre d'éléments dans le tableau.
ElementSize Indique la taille, en octets, de chaque élément du tableau.

Valeurs de retour (calloc)

Une fois l'opération terminée, la sous-routine calloc renvoie un pointeur vers le tableau alloué et initialisé à zéro. Si la taille demandée est 0, la sous-routine calloc renvoie NULL dans des circonstances normales. Toutefois, si le programme a été compilé avec la macro _LINUX_SOURCE_COMPAT définie, la sous-routine calloc renvoie un pointeur valide vers un espace de taille 0.

Si la demande ne peut pas être satisfaite pour une raison quelconque, la sous-routine calloc renvoie NULL.

Codes d'erreur (calloc)

Article Descriptif
ENOMEM L'espace de stockage disponible est insuffisant pour traiter la demande.

mallopt

Syntaxe (mallopt)

#include <malloc.h>
#include <stdlib.h>
int mallopt (Command, Value)
int Command;
int Value;

Description (mallopt)

La sous-routine mallopt est fournie pour la compatibilité de niveau source avec la sous-routine System V malloc . La sous-routine mallopt prend en charge les commandes suivantes:
Tableau 1. Commandes et effets
Commande Valeur Effet
M_MXFAST 0 Si elle est appelée avant toute autre sous-routine du sous-système malloc , elle active la règle d'allocation par défaut pour le processus.
M_MXFAST 1 Si elle est appelée avant toute autre sous-routine du sous-système malloc , elle active la règle d'allocation 3.1 pour le processus.
M_DISCLAIM 0 S'il est appelé alors que l'allocalisateur par défaut est activé, toute la mémoire disponible dans le segment de mémoire du processus est rejetée.
M_MALIGN N S'il est appelé lors de l'exécution, définit l'alignement d'allocation malloc par défaut sur la valeur N. La valeur N doit être une puissance de 2 (supérieure ou égale à la taille d'un pointeur).

Paramètres (mallopt)

Article Descriptif
Commande Indique la commande mallopt à exécuter.
Valeur Indique la taille de chaque élément du tableau.

Valeurs de retour (mallopt)

Une fois l'opération terminée, la sous-routine mallopt renvoie 0. Sinon, 1 est renvoyé. Si un alignement non valide est demandé (qui n'est pas une puissance de 2), mallopt échoue avec une valeur de retour de 1, bien que les appels ultérieurs à malloc ne soient pas affectés et continuent de fournir la valeur d'alignement avant l'appel mallopt ayant échoué.

Codes d'erreur (mallopt)

La sous-routine mallopt ne définit pas errno.

mallinfo

Syntaxe (mallinfo)

#include <malloc.h>
#include <stdlib.h>
struct mallinfo mallinfo();

Description (mallinfo)

La sous-routine mallinfo peut être utilisée pour obtenir des informations sur le segment de mémoire géré par le sous-système malloc .

Valeurs de retour (mallinfo)

La sous-routine mallinfo renvoie une structure de type struct mallinfo, remplie avec des informations et des statistiques pertinentes sur le segment de mémoire. Le contenu de cette structure peut être interprété à l'aide de la définition de struct mallinfo dans le fichier /usr/include/malloc.h .

Codes d'erreur (mallinfo)

La sous-routine mallinfo ne définit pas errno.

segment_info_mobile

Syntaxe (mallinfo_heap)

#include <malloc.h>
#include <stdlib.h>
struct mallinfo_heap mallinfo_heap (Heap)
int Heap;

Description (mallinfo_heap)

Dans un contexte multisegment de mémoire, la sous-routine mallinfo_heap peut être utilisée pour obtenir des informations sur un segment de mémoire spécifique géré par le sous-système malloc .

Paramètres (mallinfo_heap)

Article Descriptif
Segment de mémoire Indique le segment de mémoire à interroger.

Valeurs renvoyées (mallinfo_heap)

mallinfo_heap renvoie une structure de type struct mallinfo_heap, qui contient des informations et des statistiques pertinentes sur le segment de mémoire. Le contenu de cette structure peut être interprété à l'aide de la définition de struct mallinfo_heap dans le fichier /usr/include/malloc.h .

Codes d'erreur (mallinfo_heap)

La sous-routine mallinfo_heap ne définit pas errno.

allocation

Syntaxe (alloca)

#include <stdlib.h>
char *alloca (Size)
int Size;

Description (alloca)

La sous-routine alloca renvoie un pointeur vers un bloc de mémoire d'au moins le nombre d'octets spécifié par le paramètre Size . L'espace est alloué à partir du cadre de pile de l'appelant et est automatiquement libéré lorsque le sous-programme appelant est renvoyé.

Si la sous-routine alloca est utilisée dans le code compilé avec le compilateur IBM® XL C for AIX® , #pragma alloca doit être ajouté au code source avant de référencer la sous-routine alloca . Vous pouvez également ajouter l'indicateur de compilateur -ma ou le fichier d'en-tête <alloca.h> .

Paramètres (alloca)

Article Descriptif
Taille Indique la taille, en octets, de la mémoire à allouer.

Valeurs de retour (alloca)

La sous-routine alloca renvoie un pointeur vers l'espace de la taille demandée.

Codes d'erreur (alloca)

La sous-routine alloca ne définit pas errno.

valloc

Syntaxe (valloc)

#include <stdlib.h>
void *valloc (Size)
size_t Size;

Description (valloc)

La sous-routine valloc est prise en charge en tant qu'interface de compatibilité dans la bibliothèque de compatibilité de Berkeley (libbsd.a), ainsi que dans libc.a. La sous-routine valloc a le même effet que malloc, sauf que la mémoire allouée est alignée sur un multiple de la valeur renvoyée par sysconf (_ SC_PAGESIZE).

Paramètres (valloc)

Article Descriptif
Taille Indique la taille, en octets, de la mémoire à allouer.

Valeurs de retour (valloc)

Une fois l'opération terminée, la sous-routine valloc renvoie un pointeur vers un objet mémoire d'une longueur de Taille octets, aligné sur une limite de page. Des résultats non définis se produisent si l'espace affecté par la sous-routine valloc est saturé.

Si la demande ne peut pas être satisfaite pour une raison quelconque, valloc renvoie NULL.

Codes d'erreur (valloc)

Article Descriptif
ENOMEM L'espace de stockage disponible est insuffisant pour traiter la demande.

posix_memalign

Syntaxe (posix_memalign)

#include <stdlib.h>
int posix_memalign(void **Pointer2Pointer, Align, Size)
void ** Pointer2Pointer;
size_t Align;
size_t Size;

Description (posix_memalign)

La sous-routine posix_memalign alloue Size octets de mémoire alignés sur une limite spécifiée par l'option Align. L'adresse de cette mémoire est stockée dans Pointer2Pointer.

Paramètres (posix_memalign)

Article Descriptif
Pointer2Pointer Indique l'emplacement dans lequel l'adresse doit être copiée.
Alignement Indique l'alignement de la mémoire allouée, en octets. Le paramètre Aligner doit être un multiple de puissance de deux de la taille d'un pointeur.
Taille Indique la taille, en octets, de la mémoire à allouer.

Valeurs de retour (posix_memalign)

Une fois l'opération terminée, posix_memalign renvoie 0. Sinon, un numéro d'erreur est renvoyé pour indiquer l'erreur.

Codes d'erreur (posix_memalign)

Article Descriptif
EINVAL La valeur de l'option Aligner n'est pas un multiple de puissance de deux de la taille d'un pointeur.
ENOMEM L'espace de stockage disponible est insuffisant pour traiter la demande.