Sobes.tech
Junior — Middle

Explique el mecanismo de funcionamiento del puntero inteligente std::unique_ptr en C++ y sus características

sobes.tech AI

Respuesta de la IA

std::unique_ptr — es un puntero inteligente en C++ que garantiza la propiedad exclusiva de un objeto. Sus características:

  • Propiedad exclusiva: solo un unique_ptr puede poseer el objeto en un momento dado.
  • Liberación automática de memoria: al destruirse, el unique_ptr llama al destructor del objeto y libera la memoria.
  • No se puede copiar, pero sí mover (std::move), lo que permite transferir la propiedad.

Ejemplo de uso:

#include <memory>
#include <iostream>

int main() {
    std::unique_ptr<int> ptr1 = std::make_unique<int>(10);
    std::cout << *ptr1 << std::endl; // muestra 10

    // std::unique_ptr<int> ptr2 = ptr1; // Error: la copia está prohibida
    std::unique_ptr<int> ptr2 = std::move(ptr1); // Transferencia de propiedad

    if (!ptr1) {
        std::cout << "ptr1 ya no posee el objeto" << std::endl;
    }

    std::cout << *ptr2 << std::endl; // muestra 10
}

De esta forma, unique_ptr ayuda a evitar fugas de memoria y garantiza la seguridad en la gestión de recursos.