1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
/*****************************************/
/* Module de gestion de la memoire. V1.0 */
/*****************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef __STDC__
#include <stdlib.h>
#else
#include <malloc.h>
#endif
#include "gestion_memoire.h"
static void erreur_allocation();
/* Les encapsulations qui vont suivre permettent d'eviter */
/* des erreurs graves de type segmentation fault, sans avoir */
/* a repeter des tests sur le resultat du malloc. */
/* Il est possible d'implementer une restauration de contexte */
/* afin d'eviter une erreur mortelle. */
/* Encapsulation du malloc. En cas d'echec de la demande, un appel */
/* a IG_erreur_mortelle est effectue. */
void *allouer(taille)
long taille;
{
void *pointeur_buffer;
if ((pointeur_buffer=(void *)malloc(taille)) == NULL)
erreur_allocation();
return pointeur_buffer;
}
/* Encapsulation du realloc. En cas d'echec de la demande, un appel */
/* a IG_erreur_mortelle est effectue. */
void *reallouer(buffer,taille)
void *buffer;
long taille;
{
void *pointeur_buffer;
if ((pointeur_buffer=(void *)realloc(buffer,taille)) == NULL)
erreur_allocation();
return pointeur_buffer;
}
void liberer(buffer)
void *buffer;
{
free(buffer);
}
/** IG ??? **/
static void erreur_allocation()
{
fprintf(stderr,"<gestion_memoire> : Pas assez de memoire disponible.");
return;
/* fprintf(stderr,"<gestion_memoire> : Pas assez de memoire disponible.\n");
exit(1);*/
}
|