En mi clase, tengo una variable miembro std::vector<node*> children
¿Es una pérdida de memoria push_back un puntero en un vector de punteros?
¿La siguiente función miembro de clase crea una pérdida de memoria?
//adds a child node
{
node* child = new node("blah","blah","blah");
child->Set_Parent(this);
children.push_back(child); //<- Is this ok?
}
El vector hace una copia del puntero y tengo dos punteros a la misma memoria, y luego el original del puntero sale del ámbito, ¿verdad?
Esto puede ser simple y obvio, pero me gustaría confirmar mi suposición.
gracias
Te sugiero que busques punteros inteligentes, como ['std :: shared_ptr'] (http://en.cppreference.com/w/cpp/memory/shared_ptr). –
@JoachimPileborg: Incluso puede usar ['std :: unique_ptr'] (http://en.cppreference.com/w/cpp/memory/unique_ptr) en este caso, ya que' std :: vector' admite la semántica de movimiento. – bitmask
Si se supone que los nodos siempre tienen padres, puedes convertirlos en una parte del constructor. Entonces solo necesitas 'children.push_back (nuevo nodo (" blah "," blah "," blah "), esto);' – dtech