? Pekere bestemme hvilken type objekt et program forutsetter er i en bestemt minneområde . Pekere kan konverteres til bestemte heltall eller implisitte referanser. Pekere kan referere til andre pekere og data matriser . Implisitt dereferencing av pekere introduserer faren for software feil og sårbarheter som ikke forekommer når pekere er eksplisitt definert. Eksplisitte Versus Implisitt pekere
variable til høyre implisitt referert til ligningen til venstre.
Eksplisitt pekeren konverteringer endre én pekeren type til en annen pekertypen . Endring av et helt tall eller en byte til en peker er også en eksplisitt konvertering. C + + gjør det mulig for den implisitte konvertering fra en peker for å skrive void * . Null literals kan ha en implisitt konvertering til enhver pekertypen . Variablene på høyre side av et oppdrag uttalelse er implisitt derefereres som de tar på verdien av verdiene på venstre side av oppdraget uttalelse. Alle dereferencing ligger implisitt i Java.
Dereferencing Operatører
I C + + , må pekere til klassens medlemmer bli derefereres i sammenheng med en klasse objekt . A. * Operatør dereferences en peker til et medlem med en klasse objekt. En pil etterfulgt av en stjerne dereferences en peker til et medlem med en peker til en klasse objekt. Bruke " *" indirection operatør i programmeringsspråket C kalles dereferencing en peker . En peker defineres ved hjelp av uttrykket ptr = variabel eller verdi. En derefereres pekeren er definert ved hjelp av uttrykket * ptr = variabel eller verdi .
Feil
Dereferencing en peker kan føre til ugyldige verdier hvis adressen er referert etter slutten av sin levetid . Når en peker derefereres , kaller programmet verdien referert av pekeren. Null pekere har en standard 0x0 verdi hvis statiske og ikke-initialisert . Ifølge " A Guide to Kernel Utnyttelse " av Enrico Perla , "Hvis en kernel banen forsøker å dereference en NULL-peker , vil det rett og slett prøver å bruke minnet adressen 0x0 , noe som sannsynligvis vil resultere i panikk tilstand , siden ingenting er kartlagt det . "Pekeren må defineres ved hjelp av * ptr kommandoen før derefereres pekeren kan brukes andre steder i et C-program .
p Hvis det * ptr ikke tilordnet en verdi før de blir referert, kan programmet krasje. Pekere til data medlemmer kan resultere i en dårlig dereference . Hvis pekeren ikke ser opp verdier fra en rekke klasse objekter og kan ikke fastslå verdien av variabelen , vil det oppstå en feil . "C + + Gotchas " av Stephen C. Dewhurst sier at " en peker til medlem refererer til en bestemt medlem av en uspesifisert objekt. " Den refererte objektet må leveres i tillegg for pekeren skal fungere korrekt .
Sikkerhetsproblemer
Implisitt dereferencing av en ikke-initialisert pekeren skaper en sårbarhet i programvare-kode . Minne korrupsjon ødelegger en peker som blir derefereres . Dereferencing en ikke-initialisert pekeren fører til at programvare for å referere til et minneområde som ikke er validert . Uten kontroll av kilden eller målet for derefereres pekeren , kan hackere bruke dette sikkerhetsproblemet til å passere en kernel adresse til programvaren kjernen og endre minnet med sine egne ønskede verdier i stedet for brukerens data .