Pourquoi les pointeurs intelligents remplacent new et delete bruts
Comprendre RAII et pourquoi posséder des pointeurs bruts est rarement correct en C++ moderne
Pourquoi les pointeurs intelligents remplacent new et delete bruts est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.
new et delete bruts
L’héritage du C : new T alloue un T sur le tas ; delete le libère. Vous devez associer chaque new à exactement un delete — sinon vous provoquez une fuite (ou un plantage).
Widget* w = new Widget();
// ... use w ...
delete w; // forget this and you leakCe qui peut mal tourner
Erreurs courantes :
deleteoublié — fuite de mémoire- Double
delete— comportement indéfini - Exception lancée entre
newetdelete— fuite - Retour d’un pointeur brut dont la propriété n’est pas claire
RAII à la rescousse
Acquisition de ressources, initialisation : liez la durée de vie d’une ressource à celle d’un objet de la pile. Le destructeur libère la ressource, même si une exception est lancée.
Le principe du pointeur intelligent
Un pointeur intelligent est un petit adaptateur RAII autour d’un pointeur brut. Son destructeur appelle delete. Vous n’oubliez ainsi jamais de libérer la mémoire.
Les trois pointeurs intelligents
Pointeurs intelligents de la bibliothèque standard dans <memory> :
std::unique_ptr<T>— propriété exclusivestd::shared_ptr<T>— propriété partagée avec comptage des référencesstd::weak_ptr<T>— observateur sans propriété d’un shared_ptr
Les pointeurs intelligents sont peu coûteux
unique_ptr n’ajoute aucun surcoût (même taille et même vitesse qu’un pointeur brut). shared_ptr entraîne le léger coût d’un comptage atomique des références.
Fini les delete manuels
Avec les pointeurs intelligents, vous n’écrivez presque jamais delete. Le destructeur s’en charge.
#include <memory>
std::unique_ptr<Widget> w = std::make_unique<Widget>();
// no delete needed — when w goes out of scope, Widget is destroyedPointeurs intelligents et exceptions
Si une exception est lancée au milieu d’une fonction, les variables locales sont détruites dans l’ordre inverse. Les pointeurs intelligents libèrent automatiquement leurs ressources : les pointeurs bruts provoquent des fuites.
La propriété dans le type
Le type du pointeur intelligent encode désormais la propriété. La lecture de la signature d’une fonction vous indique qui possède l’objet.
// I take ownership
void consume(std::unique_ptr<Widget> w);
// I look but do not own
void inspect(const Widget& w);Les pointeurs bruts existent toujours
Utilisez des pointeurs bruts (ou des références) pour un accès sans propriété. Ils indiquent : « J’emprunte l’objet, je n’en suis pas propriétaire. »
Remplacer new par les fonctions make
Préférez std::make_unique (C++14) et std::make_shared (C++11). Ces fonctions sont sûres en présence d’exceptions et légèrement plus efficaces qu’un appel direct à new.
auto w = std::make_unique<Widget>(42);
auto s = std::make_shared<Resource>("file.txt");Vérification rapide
Quelle est la raison principale d’utiliser std::unique_ptr plutôt qu’une paire brute new/delete ?
Récapitulatif
Utiliser new/delete bruts est source d’erreurs. Les pointeurs intelligents enveloppent les objets alloués sur le tas dans des gestionnaires RAII qui libèrent automatiquement les ressources. Préférez std::make_unique et std::make_shared pour plus de sûreté et de performances.
Questions Fréquemment Posées
La leçon « Pourquoi les pointeurs intelligents remplacent new et delete bruts » est-elle gratuite ?
Oui — le texte complet de « Pourquoi les pointeurs intelligents remplacent new et delete bruts » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Pourquoi les pointeurs intelligents remplacent new et delete bruts » ?
Comprendre RAII et pourquoi posséder des pointeurs bruts est rarement correct en C++ moderne Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C++ Academy ?
Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Pourquoi les pointeurs intelligents remplacent new et delete bruts » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?
Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Pourquoi les pointeurs intelligents remplacent new et delete bruts
- unique_ptr : propriété exclusive
- shared_ptr et weak_ptr : propriété partagée
- Suppresseurs personnalisés et fonctions make