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.