Gestion dynamique de la mémoire : new / delete L’instanciation statique des variables est soumise à la règle de portée de nom. L’allocation dynamique permet de s’affranchir de ces règles. C’est alors au programmeur de gérer la mémoire via - l’utilisation des pointeurs - les opérateurs new et delete L’opérateur new permet d’instancier un objet : il réserve la place mémoire pour le stocker, engendre l’appel du constructeur et retourne l’adresse mémoire de la zone réservée L’opérateur delete engendre l’appel du destructeur puis libère la place mémoire Les opérateurs new et delete s’appliquent aussi bien aux types simples qu’aux types complexes (classes).
Gestion dynamique de la mémoire : exemple Allocation dynamique Déclaration statique int *p0; p0 = new int; *p0 = 421; // p0 pointe sur un entier initialisé a 421 delete p0; Type simple int n = 421; float *tab; tab = new float[5]; // Réserve un tableau de 5 réels for (int i = 0; i < 5; i++) tab[i] = 1.4 * i; delete[] tab; float tab[5]; for (int i = 0; i < 5; i++) tab[i] = 1.4 * i; Tableau // Appel du constructeur par défaut : Cercle *p0 = new Cercle ; // S’il existe un constructeur avec les arguments correspondants : Cercle *p1 = new Cercle(arg1, arg2, arg3); // Tableau de n objets de type Cercle Cercle *p2 = new Cercle [n]; p1->deplace(10, 20); delete p0; delete p1; delete[] p2; Cercle c0; Cercle c1(arg1, arg2, arg3) Cercle c2[10]; c1.deplace(10, 20); Type complexe