Czyszczenie vectora <new>

0

Jeżeli mam

std::vector <Entity> e;

I wypełniam go w ten sposób:

e.push_back(*new Entity(a,b,c));

To w jaki sposób potem usunąć ten wskaźnik na końcu programu, jak zwolnić te pamięć z niego?

dodanie znaczników <code class="cpp"> - @furious programming

0
e.erase(e.size() - 1);

Kod może nie działać bo pisany "na kolanie".

0

Wyczyści to cały vector, ale czy nie będzie żadnych wycieków pamięci potem?
Czy nie trzeba jakoś zwolnić pamięci inaczej przed clearem?

0

Musisz ręcznie wywołać delete, użyć inteligentnych wskaznikow lub boost::ptr_vector

Btw, to co robisz jest tragiczne. pac po łapkach

0

To znaczy jak dokładnie?

0
e.push_back(Entity(a, b, c));
//lub
e.emplace_back(a, b, c);
0

Jak tworzę w ten sposób to program crashuje, oczywiście tylko w wypadku tego obiektu, bo zawiera sf::Text z SFML 2, który jest jakoś zbugowany. I jeżeli dodaje obiekt w ten sposób to nie działa, ale jak *new to już tak.

0
onion napisał(a):

Jeżeli mam std::vector <Entity> e; I wypełniam go w ten sposób:
e.push_back(*new Entity(a,b,c));
To w jaki sposób potem usunąć ten wskaźnik na końcu programu, jak zwolnić te pamięć z niego?

sposob jaki podałeś zużywa 2 razy więcej pamięci i dodatkowo zostawia wycieki. Jak chcesz dynamicznie przydzielać pamięć, to w wektorze trzymaj wskaźniki....

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