Malloc

Contenu du snippet

Un malloc qui retourne jamais NULL

Source / Exemple :


// Il est souvent utile dans un programme
// de vouloir allouer de la memoire.
// pour cela on utlilise la fonction 'malloc'.
// On va faire notre nouveau 'malloc'.
// Car la fonction 'malloc' peut retourner NULL,
// Et ceci nous oblige a toujours tester la valeur
// de retour.Cela est neanmoins rare.
#include <stdlib.h>   // malloc,exit
#include <stdio.h>    // printf
#include <conio.h>    // getch

//-----------------------------------------------
// MALLOC
//-----------------------------------------------
void *Malloc(size_t SizeOfMalloc)
{
// pointeur sur la zone memoire allouee.
void *p;

// on alloue.
p = malloc(SizeOfMalloc);

// on teste si cela n'a pas reussi
if(p == NULL)
  {
  // un message
  printf("Impossible d'allouer %d octets de memoire !\n",SizeOfMalloc);
  // on attend
  getch();
  // ceci est rare, donc on peut ce permettre
  // de quitter tout le programme dans le cas echeant.
  exit(1);
  }

// sinon on retourne le pointeur.
return p;
}

//-----------------------------------------------
// MAIN
//-----------------------------------------------
int main(int argc,char **argv)
{
// voici des varibles a plusieurs types.
char    *a;
int     *b;
long    *c;
double  *d;
float   *e;

// on alloue de la memoire pour chacune des variables. (1000000 de chaque)
a = Malloc(sizeof(char    ) * 1000000);
b = Malloc(sizeof(int      ) * 1000000);
c = Malloc(sizeof(long    ) * 1000000);
d = Malloc(sizeof(double) * 1000000);
e = Malloc(sizeof(float   ) * 1000000);

// on teste si un des pointeurs est nuls.
if(! (a && b && c && d && e) )
  {
  printf("BUG : Notre malloc n'aurait pas du\n");
  printf("retourner NULL (sous aucun pretexte) !\n");
  }
else
  {
  printf("Aucun pointeur est nul.\n");
  printf("Notre malloc a l'air de marcher ...\n");
  }

// on libere les zones de memoire allouees
free(a);
free(b);
free(c);
free(d);
free(e);
// on attend.
getch();
return 0;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.