es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambiar de unique_ptr a variable de pila.

¿Es posible crear una variable de pila (de tipo T con un constructor de movimiento) a partir de un std::unique_ptr<T>?

Intenté algo como

std::unique_ptr<T> p = ext_get_my_pointer();  // llamada externa que devuelve un puntero inteligente
T val{std::move(*p.release())};                 // en realidad necesito una variable de pila

pero parece feo y aparentemente crea una fuga de memoria. No estoy seguro de por qué.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible crear una variable de stack (de tipo T con un constructor de movimiento) a partir de un std::unique_ptr<T>. El siguiente fragmento de código muestra cómo hacerlo:

    cpp
    std::unique_ptr<t> p = ext_get_my_pointer(); // la llamada externa devuelve un puntero inteligente
    T val{std::move(*p)}; // crear una variable de stack
    p.reset(); // liberar el puntero único

Comments are closed.