Accueil Programmation Algorithmique Algorithme : allocation et liberation de mémoire

Algorithme : allocation et liberation de mémoire

On peut allouer puis liberer de l'espace mémoire à un pointeur qui n'a pas eu d'affectation d'adresse d'une variable existante.

Algorithme C

nom_pointeur <--- allouer(taille(type))       nompointeur=(type *)malloc(sizeof(type));
liberer(nom_pointeur)                             free(nompointeur);


exemple:

int * ptr;

ptr=(int *)malloc(sizeof(int));

//allocation  d'un espace mémoire la taille est celle qu'occupe une variable de type entier

* ptr = 15;

le contenu de l'espace mémoire
pointé par PTR recoive la valeur 15

printf(''valeur pointée : %d'',*ptr);
free(ptr);


3) Les pointeurs et les tableaux:

En C, le nom d'un tableau est considérer comme un pointeur gardant l'adresse du 1er élément du tableau appelé adresse de base du tableau.

Exemple:

int tab[10];






0                                                            10

tab est un pointeur qui garde l'adresse de tab[0] première élément


Puisque les éléments d'un tableau occupent des espace mémoire contigues , on peut utiliser des pointeurs pour parcourir un tableau.


Utilisation de la notion d'indice et de la notion de pointeur pour parcourir un tableau

Notion d'indice
Notion d'adresse
Int tab[0];
int i;

//saisi
for(i=0,i<10;i++)
{
printf(''Element: %d'',i+1);
scanf(''%d'',&tab[i]);
}
//affichage
for(i=0;i<10;i++)
{
printf(''element: %d=%d'',i+1,tab[i]);
}
Int tab[0];
int * ptr;
//saisi

for(ptr = tab ; ptr < tab+10; ptr++)
{
printf(''Element : %d '' , ptr + 1 – tab);
scanf(''%d'',ptr);
}

//affichage
for(ptr = tab ; ptr < tab+10 ; ptr++)
{
printf(''Element : %d = %d'',ptr+1 – tab,*ptr);
}