Jak wyeliminować wycieki pamieci??

0

Witam.

Za pomocą <list> stworzyłem listę wskazników na obiekty :

class Glowna
{
///
};

list<Glowna*> Lista;
TMP* Glowna;
TMP = new Glowna;


 

Mój problem polega na tym, ze chcialbym aby nie było wycieków pamięci,
gdyz zdaje sobie sprawe, iz funkcja "erase" uzyta w stosunku do obiektu z listy tego nie zapewni.

W jaki sposob moglbym to zrobic?

0

Zainteresuj się inteligentnymi wskaźnikami (smart pointers), więcej informacji o tym możesz znaleźć tutaj: http://en.cppreference.com/w/cpp/header/memory

3

Nie używaj zwykłych wskaźników do oznaczania posiadania. Używaj kontenerów lub smart pointerów. Jeśli używasz new to prawdopodobnie robisz coś źle. Jeśli musisz ręcznie używać delete to prawie na 100% robisz coś źle.

0
kq napisał(a):

Nie używaj zwykłych wskaźników do oznaczania posiadania. Używaj kontenerów lub smart pointerów. Jeśli używasz new to prawdopodobnie robisz coś źle. Jeśli musisz ręcznie używać delete to prawie na 100% robisz coś źle.

No a <list> to nie kontener :P?

3

To kontener (jeden z gorszych wyborów dla większości przypadków, przy okazji). Glowna* to nagi wskaźnik, tutaj powinien być prawdopodobnie unique_ptr<Glowna> i make_unique zamiast new.

0

Dziekuje za rady, zastosuje sie do nich, po glebszym poznaniu :)

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