Sobes.tech
Junior — Middle

Quelles sont les différences entre un pointeur non enveloppant standard et un pointeur intelligent std::unique_ptr en C++?

sobes.tech IA

Réponse de l'IA

Les principales différences entre un pointeur brut standard (raw pointer) et un pointeur intelligent std::unique_ptr en C++:

  • Gestion de la durée de vie de l'objet :

    • Le pointeur brut stocke simplement l'adresse, mais ne gère pas la durée de vie de l'objet. Il faut appeler manuellement delete.
    • std::unique_ptr supprime automatiquement l'objet à la sortie du scope, évitant ainsi les fuites de mémoire.
  • Propriété :

    • Le pointeur brut ne possède pas l'objet, il peut être copié et transféré librement.
    • std::unique_ptr possède l'objet de manière exclusive, la copie est interdite, seul le déplacement est autorisé.
  • Sécurité :

    • Le pointeur brut peut conduire à des erreurs si l'on oublie de supprimer l'objet ou si l'on l'utilise après sa suppression.
    • std::unique_ptr aide à éviter ces erreurs grâce à sa gestion automatique.

Exemple d'utilisation de std::unique_ptr :

#include <memory>

std::unique_ptr<int> ptr = std::make_unique<int>(42);
// ptr supprimera automatiquement l'objet à la sortie du scope

Ainsi, std::unique_ptr facilite la gestion de la mémoire dynamique et augmente la sécurité du code.