In de C -programmeertaal , wijzers slaan adresgegevens voor het geheugen locaties in de computer . Ze laten ook een programma om de computer vragen voor het geheugen ( of " toewijzen " memory ) tijdens de uitvoering . Omdat pointers omgaan met het geheugen dynamisch , komen ze met bepaalde gevaren en nadelen ondanks hun noodzaak. Geheugenlekken Wanneer een programma aanvragen geheugen door het gebruik van een pointer , moet dat wijzer voortdurend verwijzen naar het geheugen toegewezen . Indien op enig moment een locatie van toegewezen geheugen heeft geen overeenkomstige pointer ( als alle pointers verwijzen naar het geheugen zijn " spitse " elders ) , kan dat het geheugen niet meer worden benaderd door het programma . Dit geheugen is nu " wees . " Echter , de computer nog steeds beschouwt dit geheugen toegewezen . Als een programma draait continu , en dezelfde regels code worden uitgevoerd miljoenen keren , een fout in het toewijzen van geheugen door een pointer foutje kan snel vol beschikbare geheugen met ontoegankelijke gegevens , waardoor een geheugenlek . null Pointers Pointers die niet verwijzen naar een adres in het geheugen worden " null " pointers genoemd . Terwijl ze serveren nuttige functies in de programmering ( zoals betekenende geheugenallocatie fouten ) , een belangrijk probleem doet zich voor wanneer " dereferentie " een null pointer ( dereferentie een pointer betekent toegang tot de gegevens in het geheugen locatie waarnaar de pointer ) . Wanneer een programma wordt geschreven , geen beveiliging controleert omgaan met de dereferentie van een null pointer . In feite , een groot programma kan alleen per ongeluk dereferentie een null pointer , ergens diep in miljoenen regels code . Wanneer de code wordt uitgevoerd , echter , een dereferentie null pointer zal een programma laten crashen . Buffer Overflow A memory overrun ( of " buffer overflow " ) treedt op wanneer het geheugen een pointer toegekend is niet groot genoeg voor de ingang ontvangt. Bijvoorbeeld , als een programma geheugen toewijst een woord zeven karakters en ontvangt als invoer een woord negen tekens , worden de extra twee tekens in het geheugen buiten de zeven tekens pointer geheugen . De extra twee personages overschrijven alles daarin . Er is geen manier om het programma om te weten wat er in die extra twee geheugenlocaties . Ze kan gevoelige data voor het ( bijvoorbeeld programmavariabelen ) bevatten , of zelfs voor de computer zelf . Dit leidt tot " data corruptie , ' als gegevens die intact buiten het toegewezen geheugen had moeten zijn is nu aangetast .
|