Vector trzymajacy wskazniki

Odpowiedz Nowy wątek
2014-12-15 21:52
Biały Pomidor
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ę?

Pozostało 580 znaków

2014-12-15 21:53
Biały Pomidor
0

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

Pozostało 580 znaków

2014-12-15 22:01
1

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-15 22:07
Mały Mleczarz
0
  for(auto& w : objects)
        delete w;

Czy to załatwi sprawę?

Pozostało 580 znaków

2014-12-15 22:09
1

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-12-15 22:51
1

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

Pozostało 580 znaków

2014-12-16 12:26
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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