Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Aké nevýhody Existujú v implicitné dereferencing ukazovateľov ?

Ukazovatele určiť typ objektu softvérový program predpokladá , je v určitom mieste pamäti . Ukazovatele môžu byť prevedené na konkrétny celé čísla alebo implicitné odkazy . Ukazovatele môžu obsahovať odkazy na iné ukazovatele a dátové pole . Implicitné dereferencing ukazovateľov predstavuje riziko softvérových chýb a zraniteľností , ktoré sa nevyskytujú , ak sú ukazovatele explicitne definované. Explicitné Versus Implicitná Ukazovatele
z premennej na pravej strane sa implicitne vzťahuje k rovnicu na ľavej strane .

Explicitné ukazovateľ konverzie zmeniť jeden typ ukazovateľa na iný typ ukazovateľa . Zmena celé číslo alebo bajt ukazovateľ je tiež explicitné konverzie . C + + umožňuje implicitné konverziu z typu ukazovateľ s typom void * . Nulové literály môžu mať implicitné prevod na ľubovoľný typ ukazovateľa . Premenné na pravej strane priraďovacieho príkazu sú implicitne dereferenced pretože sa na hodnoty z hodnôt , na ľavej strane príkazu priradenia . Všetky dereferencing je implicitná v Jave .
Dereferencing Operátori

V C + + , ukazovatele na členov tried , musí byť dereferenced v rámci objektu triedy . . * Operátor dereferences ukazovateľ na člen s objektom triedy . Arrow nasleduje hviezdičkou dereferences ukazovateľ na člen s ukazovateľom na objekt triedy . Pomocou " * " operátor nepriame v programovacom jazyku C sa nazýva dereferencing ukazovateľ . Ukazovateľ je definovaný pomocou výrazu ptr = premennej alebo hodnoty . Dereferenced ukazovateľ je definovaný pomocou výrazu * ptr = premennej alebo hodnoty .
Chyby

Získavanie ukazovateľ môže mať za následok neplatné hodnoty , ak odkazuje adresa po skončení jeho životnosti . Je-li ukazovateľ dereferenced , program volá hodnotu odkazovaný ukazovateľom . Nulové ukazovatele majú predvolenú hodnotu 0x0 Ak statické a inicializovaná . Podľa " Sprievodca pre jadrá vykorisťovania " zo strany Enrico Perla , " Ak cesta jadro pokúsi dereferencia ukazovateľ NULL , to bude jednoducho skúste použiť adresu pamäti 0x0 , ktoré pravdepodobne budú mať za následok panické stavu , pretože nič sa tam mapovaný . " ukazovateľ musí byť definovaná pomocou príkazu * ptr pred dereferenced ukazovateľ možno použiť inde v programe C.

Ak je * ptr nie je priradená hodnota , než na ktorý sa odkazuje, je možné program pád . Ukazovatele na členov dát môže mať za následok zlé dereferencované . Pokiaľ ukazovateľ nie je vzhliadol hodnoty z radu tried objektov a nemožno určiť hodnotu premennej , dôjde k chybe . " C + + Gotchas " od Stephena C. Dewhurst uvádza , že " ukazovateľ na člen odkazuje na konkrétny člen nešpecifikovaného objektu . " Odkazovaný objekt musí byť dodané aj pre ukazovateľ pracovať správne .

Chyby

Implicitná dereferencing neinicializované ukazovateľ vytvára zraniteľnosť rámci softvérového kódu . Poškodenie pamäti poškodí ukazovateľ , ktorý sa stane dereferenced . Získavanie neinicializované ukazovateľ spôsobí , že softvér sa odkazovať na umiestnenie v pamäti , ktoré nie sú overené . Bez kontroly na zdroj alebo určenie dereferenced ukazovatele , môžu hackeri zneužiť túto chybu zabezpečenia k odovzdanie adresy jadra do softvérového jadra a upraviť svoje pamäti s vlastnými požadovanej hodnoty v mieste užívateľských dát .


Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené