Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno c++ "Divoké" ukazatele

Dobrý den, narazil jsem při studování c++ na to, že bych měl ukazatelům, na které zavolám delete , přiřadit hodnotu, pokud bych se pokusil zavolat ukazatel bez toho, aniž bych mu přiřadil hodnotu, tak se v prý nejlepším případě zhroutí program... Nepřehánějí moc? Je to opravdu tak nebezpečné, nebo prostě spadne program a nic víc se nestane, Děkuju za vysvětlění

Předmět Autor Datum
Priradiť null hodnotu môžeš a nemusíš. Ak pracuješ s uvoľnením pointrom, tak to aj tak spadne. Keď t…
los 29.09.2011 21:46
los
Děkuju moc za vysvětlení, toto bych se v knížce nedozvěděl... =)
Swix 29.09.2011 22:57
Swix
Neprehanaju. Ak tvoj program prepisuje nieco na disku tak by teoretocky mohol poprepisovat riadne kr…
MM... 29.09.2011 23:27
MM...
... a ten test na null sa da konieckoncov pouzit aj v destruktore na test ci treba robit delete. Ina… poslední
MM... 29.09.2011 23:36
MM...

Priradiť null hodnotu môžeš a nemusíš. Ak pracuješ s uvoľnením pointrom, tak to aj tak spadne. Keď tam dáš null, tak ti to padne definovaným spôsobom. Ak nie, tak sa program môže zachovať nepredvídateľne.

Ak sa premenná s neplatným smerníkom stane nedostupnou po opustení rozsahu platnosti, tak je zbytočné jej nastavovať null. Ak ju ale znovupoužívaš, tak je nastavenie null rozumné. Osobne som radšej za nastavovanie null, pretože sa vyhneš v prípade chyby nedefinovanému správaniu.

Neprehanaju. Ak tvoj program prepisuje nieco na disku tak by teoretocky mohol poprepisovat riadne kraviny, aj ked je to velmi nepravdepodobne. Ja osobne povazujem pracu s neplatnym pointrom za chybu absolutne najhrubsieho zrna, ako ochrana voci tomu je zvyk neplatne pointre VZDY mat inicializovane na null a aj zneplatnene pointre nastavovat na null, a VZDY ked je pointer ako vstup fcie alebo v neprehladnych cykloch testovat pred pouzitim ci neni null

... a ten test na null sa da konieckoncov pouzit aj v destruktore na test ci treba robit delete.
Inac extremne pozorny treba byt u multithread aplikacii ak pouzivas nieco spolocne vo viacerych threadoch tak dokonca nestaci to len nastavit na null ale musi to byt aj critical section

Zpět do poradny Odpovědět na původní otázku Nahoru