Académique Documents
Professionnel Documents
Culture Documents
Les variables à créer ainsi que leurs tailles sont connues au moment de la
compilation ( but des déclarations).
Variables locales
Appels de fonctions
instructions
Allocation dynamique de mémoire en C
malloc ( taille );
free(nom-du-pointeur);
Exemple:
int * p;
p = malloc (sizeof(int)); // (int*)malloc(sizeof(int));
int * p;
p = malloc (sizeof(int));
if ( p == NULL )
{ fprintf(stderr,"Allocation impossible \n"); // return -1;
exit(EXIT_FAILURE); }
Exemple:
Restitution:
La syntaxe de delete est encore plus simple,
puisqu’il suffit de faire suivre le mot-clé delete
du pointeur sur la zone mémoire à libérer :
Exemple:
#include<iostream.h>
int main ()
{
int * p1 =new int; //pointeur sur un entier
*p1 = 10; //écrit 10 dans la zone mémoire allouée
cout << *p1 << endl; /* lit et affiche le contenu de
la zone mémoire
allouée */
delete p1; // libère la zone mémoire allouée
return 0;
}
Exemple: cas d’un tableau
#include<iostream.h>
int main ()
{
int *p25= new int[25]; //allocation de mémoire pour 25 entiers
cout <<"la valeur de p25 est "<< p25 << endl; // ?
for (int i=0;i<25;i++) // initialisation du tableau à 0
{
*(p25+i)=0; // ou bien p25[i]=0;
cout << "p25["<<i <<"]="<< p25[i]<<endl;
cout << "adresse["<<i <<"]="<< &p25[i]<<endl;
}
delete[] p25; // libération de la mémoire
return 0;
}