Sobes.tech
Middle

¿Cuál es la diferencia entre un puntero inteligente y uno normal en C++?

sobes.tech AI

Respuesta de la IA

Un puntero normal en C++ es simplemente una dirección en la memoria que no gestiona el tiempo de vida del objeto. El programador es responsable de asignar y liberar memoria, lo que puede llevar a fugas o errores de doble eliminación.

Un puntero inteligente es una clase envolvente que gestiona automáticamente el tiempo de vida del objeto. Por ejemplo, std::unique_ptr posee el objeto y lo elimina cuando el puntero sale del ámbito. std::shared_ptr cuenta las referencias y elimina el objeto cuando el último puntero se destruye.

Ejemplo con std::unique_ptr:

#include <memory>

void ejemplo() {
    std::unique_ptr<int> ptr = std::make_unique<int>(42);
    // ptr eliminará automáticamente el objeto al salir de la función
}

De esta manera, los punteros inteligentes ayudan a evitar fugas de memoria y errores en la gestión de recursos, haciendo que el código sea más seguro y sencillo.