Allouer de la mémoire

Problème

Vous souhaitez allouer de la mémoire pour y stocker vos données.

Solution

Utilisez malloc(), calloc(), strdup() ou realloc() en fonction de vos besoins.

La bibliothèque glib propose quelques fonctions équivalentes à celles-ci : g_malloc(), g_malloc0(), g_realloc(), g_try_malloc() et g_try_realloc().

Il existe également deux fonctions pour allouer de la mémoire dite alignée, c’est-à-dire à une adresse multiple d’un nombre fourni en argument : posix_memalign() et aligned_alloc().

Discussion

Les fonctions malloc() et calloc() ont un rôle proche : elles allouent la mémoire demandée par l’utilisateur. Mais calloc() remet à zéro l’espace mémoire alloué alors que malloc() ne fait qu’allouer la mémoire. La fonction strdup() est plus connue pour être la fonction qui affecte une chaîne de caractères à un pointeur tout en s’occupant de l’allocation mémoire. Quant à la fonction realloc(), elle permet surtout d’agrandir un espace mémoire déjà alloué ou de le réduire.

Alors que ces fonctions renvoient toutes NULL en cas d’échec d’allocation mémoire, les fonctions g_malloc(), g_malloc0() et g_realloc() arrêtent le programme, ce qui n’oblige pas à tester la valeur renvoyée. Pour ne pas quitter le programme en cas d’erreur d’allocation mémoire...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Introduction
Suivant
Créer son gestionnaire de mémoire