Što je viseći pokazivač?

Viseći pokazivač je programska greška koja se javlja u objektno orijentiranom kodiranju kada objekt pokazivača pokazuje na drugi objekt koji više ne postoji. U ovom slučaju, pokazivač nije pokazivač miša, već objekt pokazivača koji je namijenjen slanju korisnika na drugi objekt. Ovaj nedostatak stvara suptilne greške koje se s vremenom mogu pogoršati, a također predstavlja sigurnosni problem koji vješti hakeri mogu napasti. Viseći pokazivač se događa kada programer izbriše objekt na koji se ukazuje, ali ne izbriše sam pokazivač.

U objektno orijentiranom kodiranju, u kojem je kodiranje odvojeno na objekte, postoji instanca koja se zove pokazivač. Instanca pokazivača nalazi se negdje u programu, obično u izborniku, i vodi korisnika do drugog objekta. Na primjer, ako korisnik označi dio izbornika, pojavljuje se drugi izbornik — padajući izbornik. To omogućuje programeru da postavi nekoliko objekata u jednom odjeljku bez gužve u odjeljku.

Pogreška visećeg pokazivača manifestira se kada programer izbriše objekt na koji se ukazuje. Ako programer također izbriše instancu pokazivača, neće biti problema. Ako programer zaboravi i zadrži pokazivač u kodiranju, to stvara viseći pokazivač i predstavlja probleme s kvalitetom i sigurnošću.

Što se tiče kvalitete, viseći pokazivač izgleda neuredno i stvara suptilne greške. To je zato što program ne zna kako se ponašati, jer mu se govori da nešto učini, ali ne može jer je objekt nestao. Ovaj čin stvara nasumični kod ili pogoršava kôd na male, suptilne načine koje je teško otkriti. Ove greške mogu biti male da se program kreće malo sporije, ali na kraju mogu učiniti da program – pa čak i računalo – ne funkcionira.

Većina programa s visećim pokazivačima u početku će raditi i mogu nastaviti raditi mjesecima ili čak godinama prije nego što pogreške postanu očite. Čak i programi koji izrađuju izračune, što znači da je viseći pokazivač u formuli, još uvijek mogu biti u stanju napraviti jednostavna izračunavanja. To je jedan od razloga zašto pronalaženje visećih pokazivača može biti tako teško.

Do 2007. viseći pokazivač samo je u teoriji stvarao sigurnosne probleme. Softverska tvrtka Watchfire® tada je napravila program koji je pokazao kako se viseći pokazivači mogu iskoristiti, čime je sigurnosni rizik postao stvarnost. Hakeri se mogu infiltrirati u program putem ove greške i mogu ubaciti vlastiti kod u program s greškom.