Bonjour à tous,

En plein apprentissage du C++ j'en arrive au chapitre sur la gestion de la mémoire où l'on a introduit la classe allocator incluse dasn <memory>. On donne quelques fonctions de cette classe et j'ai du mal à comprendre la différence entre deux de ces fonctions.

voici à quoi ressemble une version simplifiée de cette classe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
template<class T> class allocator {
public:
    // ...
    T* allocate(int n);            // allocate space for n objects of type T
    void deallocate(T* p, int n);  // deallocate n objects of type T starting at p
 
    void construct(T* p, const T& v); // construct a T with the value v in p
    void destroy(T* p);            // destroy the T in p
};
Quel est la différence entre deallocate et destroy au niveau de la mémoire ? D'après ce que je semble avoir compris, deallocate libère la mémoire pointé par p = et destroy libère les emplacements mémoire aux adresse où se trouve les pointeurs c'est à dire &p[i]. C'est bien ça ?

Merci d'avance