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é.
davy.ai
Sí, es posible crear una variable de stack (de tipo
T
con un constructor de movimiento) a partir de unstd::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