Pointers bepalen het type object een software programma ervan is in een specifieke geheugenlocatie . Pointers worden omgezet in specifieke eenheden of impliciete gevonden. Pointers kunnen verwijzen naar andere pointers en data arrays . Impliciete dereferentie van pointers introduceert het risico van software fouten en kwetsbaarheden die niet optreden wanneer pointers expliciet zijn gedefinieerd . Explicit Versus Impliciete Pointers De variabele rechts wordt impliciet verwezen naar de vergelijking aan de linkerkant . expliciete pointer conversies wijzigen ene type pointer naar een andere pointer type. Veranderen van een geheel getal of byte naar een pointer is ook een expliciete conversie . C + + staat voor de impliciete conversie van een pointer type op leegte * . Null letterlijke kan een impliciete conversie naar een pointer type hebben . Variabelen op de rechterkant van een toewijzingsinstructie worden impliciet dereferentie als ze op de waarde van de waarden aan de linkerkant van de opdracht verklaring . Alle dereferentie is impliciet in Java . Dereferentie Operators In C + + , moeten verwijzingen naar de klas leden worden dereferentie in het kader van een klasse -object . Een . * Operator dereferences een pointer naar een lid van een klasse -object . Een pijl gevolgd door een sterretje dereferences een pointer naar een lid met een pointer naar een klasse object . Met behulp van de " * " indirectheid operator in de C -programmeertaal heet dereferentie een pointer . Een pointer wordt gedefinieerd volgens de expressie ptr = variabele of de waarde . Een dereferentie wijzer wordt gedefinieerd volgens de expressie * ptr = variabele of waarde . Fouten dereferentie een pointer kan leiden tot ongeldige waarden als het adres wordt verwezen na het einde van de levensduur . Wanneer een aanwijzer dereferentie , wordt aangedrongen de waarde waarnaar de pointer. Null pointers hebben een standaard 0x0 waarde als statische en geïnitialiseerd . Volgens " A Guide to Kernel Exploitatie " door Enrico Perla , " Als een kernel pad probeert te dereferentie een NULL pointer , zal het gewoon proberen om het geheugen adres 0x0 , wat waarschijnlijk zal resulteren in een paniek toestand , omdat er niets is er in kaart wordt gebracht gebruiken . " de aanwijzer moet worden gedefinieerd met behulp van de * ptr commando voordat de dereferentie pointer elders in een C- programma kan worden gebruikt . Als de * ptr een waarde alvorens wordt verwezen niet wordt toegewezen , kan het programma crashen . Pointers naar data -leden kunnen resulteren in een slechte dereferentie . Als de aanwijzer niet is het opzoeken van waarden uit een array van klasse objecten en kan de waarde van de variabele niet bepalen , zal een fout optreden . " C + + Valkuilen " door Stephen C. Dewhurst stelt dat " een pointer naar lid verwijst naar een specifiek lid van een niet nader genoemde object . " Het object waarnaar wordt verwezen moet ook worden geleverd voor de aanwijzer te kunnen werken . < Br > beveiligingslekken Impliciete dereferentie van een niet-geïnitialiseerde aanwijzer zorgt voor een kwetsbaarheid in de software code . Geheugen corruptie corrumpeert een pointer die wordt dereferentie . Dereferentie een geïnitialiseerde pointer zorgt ervoor dat de software op een geheugen locatie die niet is gevalideerd verwijzen . Zonder controle op de bron of de bestemming van de dereferentie wijzer , kunnen hackers dit beveiligingslek gebruiken om een kernel -adres doorgeven aan de software kernel en het geheugen passen met hun eigen gewenste waarden in plaats van de gegevens van de gebruiker . < Br >
|