Créer son gestionnaire de mémoire

Problème

Vous voulez optimiser la gestion de la mémoire car malloc() et realloc() prennent trop de temps à votre goût.

Solution

Créez vos propres fonctions d’allocation mémoire et de libération de la mémoire, ou utilisez le gestionnaire de mémoire de glib. Pensez à utiliser les GStrings de glib pour les chaînes de caractères.

Discussion

Les gestionnaires de mémoire apparaissent en général lorsqu’il est nécessaire d’allouer une certaine quantité de mémoire, mais que vous ne savez pas combien de mémoire allouer avant d’avoir toutes les données à stocker. Le principe consiste alors à allouer plus de mémoire qu’il n’en faut, et à ne l’étendre que si nécessaire. Différents types de gestionnaires de mémoire existent. Le plus simple consiste à créer une fonction qui teste s’il faut allouer de la mémoire et ne le fait que si c’est nécessaire :


#define BLOCK_SIZE 1024 
 
char * 
mem_realloc_if_necessary (char *p, int len) 
{ 
  char *real_p = NULL; /* Ce pointeur correspond à p - sizeof(int). 
                        * La longueur de la chaîne se trouve 
                        * dans la suite entre real_p et p. 
                        */ 
  int real_len; 
  if (p != NULL) 
    { 
      /* Si p est non nul, nous retrouvons la longueur de la zone 
       * allouée...
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
Allouer de la mémoire
Suivant
Redéfinir les fonctions d'allocation de mémoire