Middle
Qual é a diferença entre um ponteiro inteligente e um ponteiro normal em C++?
sobes.tech IA
Resposta da IA
Um ponteiro comum em C++ é simplesmente um endereço na memória que não gerencia o tempo de vida do objeto. O programador é responsável por alocar e liberar memória, o que pode levar a vazamentos ou erros de dupla liberação.
Um ponteiro inteligente é uma classe envoltória que gerencia automaticamente o tempo de vida do objeto. Por exemplo, std::unique_ptr possui o objeto e o remove quando o ponteiro sai do escopo. std::shared_ptr conta o número de referências e remove o objeto quando o último ponteiro é destruído.
Exemplo com std::unique_ptr:
#include <memory>
void exemplo() {
std::unique_ptr<int> ptr = std::make_unique<int>(42);
// ptr removerá automaticamente o objeto ao sair da função
}
Assim, os ponteiros inteligentes ajudam a evitar vazamentos de memória e erros na gestão de recursos, tornando o código mais seguro e simples.