Avatar ·

Que sont les pointeurs intelligents (smart pointers) et quand faut-il les utiliser ?

Bonjour, collègues ! Je programme en C++ depuis peu, mais j'ai déjà rencontré le problème des fuites mémoire. Pour l'instant, j'utilise des pointeurs « bruts » (raw pointers) classiques avec `new` et `delete`, mais j'oublie constamment d'appeler `delete`, surtout quand le code se complique avec des exceptions et des retours anticipés. Par exemple : ```cpp void process() { Resource* res = new Resource(); // ... du code qui peut lever une exception ... delete res; // si une exception survient, on n'arrive pas ici — fuite ! } ``` J'ai entendu parler des « pointeurs intelligents » (smart pointers) en C++11, mais je ne comprends pas encore bien ce que c'est. Il y a beaucoup d'informations sur Internet, mais j'aimerais une explication claire : qu'est-ce que c'est, en quoi diffèrent-ils des pointeurs ordinaires, et dans quelles situations faut-il vraiment les utiliser ? Je m'intéresse particulièrement à `std::unique_ptr`, `std::s