I programspråket C , pekare store adressinformation för minnesplatser i datorn . De gör det också ett program för att möjliggöra be datorn för minnet ( eller " fördela " minnet ) under exekveringen . Eftersom pekare hantera minne dynamiskt , de kommer med vissa risker och nackdelar trots sin nödvändighet. Minnesläckor
När ett program begär minne genom användning av en pekare , skall denna pekaren kontinuerligt referera minnet tilldelas. Om vid någon tidpunkt en plats för tilldelade minnet inte har en motsvarande pekare ( om alla pekare som refererar till minnet är " spetsiga " håll ) , kan detta minne inte längre nås av programmet . Detta minne är nu " föräldralösa . " Anser dock att datorn fortfarande detta minne allokeras . Som ett program ständigt körs , och samma kodrader utförs miljontals gånger , ett fel i minnesallokering med en pekare misstag kan snabbt fylla tillgängligt minne med otillgängliga data , vilket orsakar en minnesläcka .
null pekare
pekare som inte avser en adress i minnet kallas " null " pekare . Medan de tjänar användbara funktioner i programmering ( t.ex. betyda fel minnesallokering ) , uppstår ett stort problem när " dereferencing " en null- pekare ( dereferencing en pekare betyder att komma åt data på minnesplatsen refereras av pekaren ) . När ett program är skrivet , kontrollerar ingen säkerhet hantera dereferencing av en null- pekare . I själva verket , ett stort program får endast oavsiktligt avreferera en null pekare , någonstans djupt i miljontals rader kod . När koden exekveras , kommer dock en dereferenced null pekare orsaka ett program att krascha .
Buffer Overflow
minne överskridande ( eller " buffer overflow " ) uppstår när minne tilldelad av en pekare inte är tillräckligt stor för den information den tar emot . Till exempel, om ett program allokerar minne för ett ord sju tecken långt och får som indata ett ord nio tecken , är de extra två tecken lagrade i minnet utanför sju tecken pekare minne . De extra två tecken skriver över allt som finns däri . Det finns inget sätt för programmet att veta vad som finns i de extra två minnesplatser . De kan innehålla känsliga uppgifter om programmet ( t.ex. programvariabler ) , eller ens för själva datorn . Detta leder till " data korruption, " som uppgifter som borde ha varit intakt utanför det tilldelade minnet är nu äventyras .