Différence entre détruire un objet et désallouer un espace ?
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:
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