Vector trzymajacy wskazniki

0
class spaceship
{
public:
// (...)
};
std::vector<gameObject*> objects;
objects.push_back(new spaceship);

Czy muszę zwolnić pamięć objektów znajdujących się w nim gdy już nie potrzebuję vectora? Czy zrobi on to za mnie?
Jak dokładnie działa taki vector? Czy jezeli odwołam się do objects[0] najpierw pobierze adres klasy, a następnie samą klasę? czy od razu klasę?

0

Zapomniałem dopisać, ze klasa spaceship dziedziczy z gameObject. Btw. czy użycie inteligentnych wskaźników jak unique_ptr ma sens?

1

Wektor nie zwolni wskaźników, ale może to zrobić share_ptr<>

0
  for(auto& w : objects)
        delete w;

Czy to załatwi sprawę?

1

O ile nie robisz nic (żadnych sztuczek) poza tym co pokazałeś to tak.

1

Używanie inteligentnych wskaźników właśnie ma taki sens, że nie musisz się martwić zwalnianiem pamięci.

0

boost::ptr_vector to kontener przechowujący wskaźniki i automatycznie je zwalnia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1