En C, l’allocation de mémoire se réalise
en utilisant les fameuses et merveilleuses ( !) fonctions
malloc (et ses variantes calloc, realloc)
et free. Bien qu’il soit toujours possible
de les utiliser en C++, deux nouveaux opérateurs
ont pris leur place : new et delete.
Exemple :
int *ptr_int ;
ptr_int = new int ; // allocation dynamique d’un entier
ptr_int = new int (5); // allocation dynamique d’un
entier avec initialisation à 5
ptr_int = new int [5]; // allocation dynamique de 5 entiers
delete ptr_int ; // libération
d’un entier
delete[ ] ptr_int ; // libération d’un tableau
d’entiers.
//Tout ce qui est alloué avec new [ ] doit être
libéré avec delete [ ].
Il est important de toujours libérer l’espace
mémoire alloué à l’aide d’un
new dès qu’il n’est plus utile. Ainsi,
à chaque new doit correspondre son
alter ego: delete. Dans le cas contraire,
on prendra de la mémoire, sans jamais la libérer,
et dans le cas de programmes importants (ou par exemple
lors d’allocations dans des appels récursifs)
on pourrait arriver à rapidement manquer d’espace
mémoire.