Usunięcie instancji i stworzenie nowej

0

Witam,
mam napisaną klasę MojKlasa
mam do niej publiczny wskaźnik

MojaKlasa* instancja;

tworzę instancję

instancja = new MojaKlasa();

i teraz w pewnym momencie działania programu potrzebuję usunąć obecną instancję, a w jej miejsce stworzyć nową,
niestety coś takiego:

delete instancja;
instancja = new MojaKlasa();

powoduje mi "Naruszenie ochrony pamięci" i program się wywala.
samo delete oczywiście działa,
samo utworzenie nowej instancji (bez delete'a) oczywiście powoduje wyciek.

W jaki sposób mogę więc tego dokonać?

0

Poprawka:
delete jednak wywala mi ten błąd, tylko jeszcze nie wiem dlaczego :/

0

Błąd musisz mieć gdzieś indziej, bo samo usunięcie zaalokowanego obiektu nie powinno mieć takich konsekwencji (chyba że masz nietrywialny destruktor).
Najprawdopodobniej IMO dwa razy usuwasz ten sam obiekt - może dwa razy wykonuje się ten fragment kodu, albo usuwasz go też gdzieś indziej?

0

Prawdopodobnie gdy kasujesz obiekt to albo:

  • obiekt już nie istnieje bo go skasowałeś gdzieś wcześniej
  • obiekt jest używany
0

Na 99% obiekt jest już skasowany i stąd ponowny delete powoduje fikołka.
Ale innaczej zrób-skoro potrzebujesz nową instancję,to jest to samo,jakbyś napisał sobie funkcję w klasie resetującą ją do takiego stanu jak tuż po new.Oszczędzisz dzięki temu na wywoływaniu new/delete oraz przy okazji będziesz miał pewność,że nigdzie w kodzie nadmiarowo sobie obiektu nie skasujesz.

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