Avatar
balaz.marek94:

Zdravím, s c++ som začal pred nedávnom a neviem si dať rady, čo spraviť so smerníkom v deštruktore? Respektíve takto, mám smerník na string a smerník na objekt, ale neviem ako ich uvoľniť z pamäte.
Moje atribúty sú:

string *nazov;
Adresa *adresa;

Našiel som zopár možností, a neviem ktoré z nich je korektné.

delete nazov;
delete adresa;

alebo

nazov = nullptr;
adresa = nullptr;

Vďaka za odpoveď :)

 
Odpovědět 1. dubna 16:03
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na balaz.marek94
Martin Dráb:

Pro čisté ukazatele je správně toto:

delete nazov;
delete adresa;
Nahoru Odpovědět 1. dubna 17:09
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Martin Dráb
balaz.marek94:

Vďaka! ale ja som to myslel všeobecne, aj s hodnotou, na ktorú smerník ukazuje :)

 
Nahoru Odpovědět 1. dubna 22:11
Avatar
Pjanus
Člen
Avatar
Odpovídá na balaz.marek94
Pjanus:

A to přesně delete dělá maže pouze hodnotu, ukazatel jako takový smazat vlastně nejde dokud nesmažeš objekt ve kterém je ukazatel samotný obsažen.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 2. dubna 0:14
Avatar
Odpovídá na Pjanus
Libor Šimo (libcosenior):

free(pointer)
sa v c++ nepouziva?

Nahoru Odpovědět 2. dubna 9:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
tomisoka:

Záleží dle alokace. Pokud použiješ C++ způsob 'new', tak musíš dealokovat pomocí 'delete'. Pokud použiješ C způsob 'malloc', tak musíš dealokovat pomocí 'free'.

Editováno 2. dubna 10:06
 
Nahoru Odpovědět  +1 2. dubna 10:06
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.