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