L'allocation dynamique de mémoire
En C/C++, on peut allouer ( et libérer) dynamiquement la mémoire. Nous utiliserons ici une syntaxe typiquement C++, faisant appel aux opérateurs new et delete.
 
 

Remarque importante : La libération de mémoire peut conduire à des bugs redoutables quand on cherche à réutiliser par exemple un tableau dont on a libéré la mémoire. Pour éviter ces problèmes, certains langages choisissent de refuser au programmeur le droit de libérer lui même la mémoire, et demandent à un processus appelé garbage collector de réaliser cette désallocation. Cette possibilité n'existe pas en C++, aussi, à un niveau élémentaire, on sera très prudent lorsqu'on libère la mémoire.
 
 

L' allocation de mémoire pour des tableaux

Exemple:

#include <iostream>
int main()
{
int n;
double *a;

// a est un pointeur sur un double
//   il va suffire d'allouer la bonne quantité de mémoire pour que cela devienne
//   un  pointeur sur le premier élément du tableau

std::cout << "rentrez n \n"; std::cin >>n;

a= new double[n];        // allocation d'un tableau de taille n

// attention , les éléments du tableau n'ont aucune raison d'être initialisés à 0

for (int i=0; i<n;i++) { a[i]=1.0; std::cout << a[i] << "\n" ; }  //  le tableau s'utilise normalement une fois alloué
 

// Si l'on voulait libérer l'espace mémoire alloué au tableau
// on écrirait simplement
//  delete []a;

// bien entendu tenter de libérer 2 fois l'espace mémoire associé à a
//. aurait toutes les raisons de provoquer de sérieux problèmes

return 0;
}
 

La mémoire allouée dans n'importe quelle fonction du programme reste allouée partout ailleurs dans le programme.
 
 
 
 
 

 L' allocation de mémoire pour les objets

Drupal 7 Appliance - Powered by TurnKey Linux