Avatar ·

O que são smart pointers e quando usá-los?

Olá, colegas! Escrevo em C++ há pouco tempo, mas já enfrentei problemas de vazamento de memória. Ainda uso raw pointers comuns com `new` e `delete`, mas constantemente esqueço de chamar `delete`, especialmente quando o código fica cheio de exceções e retornos antecipados. Por exemplo: ```cpp void process() { Resource* res = new Resource(); // ... algum código que pode lançar exceção ... delete res; // se houve exceção, não chegamos aqui — vazamento! } ``` Ouvi falar sobre smart pointers em C++11, mas não entendo completamente o que são. Há muita informação na internet, mas quero uma explicação clara: o que são essas ferramentas, como diferem dos ponteiros comuns, e em quais situações realmente devo usá-los? Estou especialmente interessado em `std::unique_ptr`, `std::shared_ptr` e `std::weak_ptr`. Quando escolher qual? Existem armadilhas? Agradeço por exemplos de código e explicações para iniciantes. <<>>

O que é um smart pointer?

Um smart po