I C programmeringssprog, pointers butik adresse oplysninger for lagerpladser i computeren. De tillader også et program til at tillade bede computeren i hukommelsen (eller " afsætte " memory ) under udførelsen. Fordi pointers beskæftige sig med hukommelse dynamisk , de kommer med visse farer og ulemper på trods af deres nødvendighed. Memory leaks
Når et program anmoder om hukommelse ved hjælp af en pegepind , skal denne pointer tiden referere hukommelsen tildelt . Hvis der på noget tidspunkt en placering af allokeret hukommelse ikke har en tilsvarende pointer ( hvis alle pejlemærker refererer til den hukommelse er " spidse " andetsteds) kan at hukommelsen ikke længere tilgås af programmet. Denne hukommelse er nu " forældreløse ". Men computeren stadig anser denne hukommelse allokeret . Som et program kontinuerligt kører , og de samme linjer kode udføres millioner af gange , en fejl i hukommelsen tildelingen af en pointer fejl kan hurtigt fylde tilgængelige hukommelse med utilgængelige data , der forårsager en hukommelsesfejl .
null pointers
pointers der ikke henviser til en adresse i hukommelsen kaldes " null " pointere. Mens de tjener anvendelige funktioner programmering ( f.eks tilkendegiver hukommelse tildeling fejl ), et stort problem opstår, når " dereferere " en null- pointer ( dereferere en pointer betyder at få adgang til data på hukommelsesplads refereres af markøren ) . Når et program er skrevet, ingen sikkerhed kontrollerer håndtere dereference en null-pointer . I virkeligheden, kan et stort program kun uheld dereference en null- pointer , et sted dybt inde i millioner af linjer kode. Når koden er udført , dog vil en derefererede null pointer forårsage et program til at gå ned.
Buffer Overflow
En hukommelse overskridelse (eller " buffer overflow " ) opstår, når hukommelse tildelt af en pointer er ikke stor nok til input , den modtager . For eksempel, hvis et program allokerer hukommelse til et ord syv tegn og modtager som input et ord ni tegn er de ekstra to tegn gemt i hukommelsen uden for syv tegn pointer hukommelse. De ekstra to tegn overskriver noget , der er indeholdt heri. Der er ingen måde , at programmet til at vide , hvad der findes i de ekstra to hukommelsespladser . De kan indeholde følsomme data for programmet (såsom program variable) , eller endog for selve computeren. Dette fører til " data korruption ", som data, der skulle have været intakt uden den tildelte hukommelse nu er kompromitteret .