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

Nevýhody Ukazovatele v C

V programovacom jazyku C , informačné ukazovatele obchod adresa pre pamäťových miest v počítači . Umožňujú tiež program , ktorý umožňuje požiadať počítač o pamäti ( alebo " prideliť " pamäť ) počas spustenia . Vzhľadom k tomu , ukazovatele vysporiadať s pamäťou dynamicky , prídu s určitými rizikami a nevýhodami napriek ich nevyhnutnosti . Úniky pamäte

Keď program požaduje pamäť pomocou ukazovateľa , musí tento ukazovateľ neustále odkazovať pridelenej pamäte . Ak sa kedykoľvek miesto pridelenej pamäte nemá zodpovedajúci ukazovateľ (ak sú všetky ukazovatele týkajúce sa pamäte sú " ukázal " inde ) , že pamäť už nie je možné pristupovať z programu . Táto pamäť je teraz " osirelé " . Počítač však stále považuje pridelené pamäte . Ako program neustále beží , a rovnaké riadky kódu sú vykonávané miliónkrát , chyba alokácie pamäte pomocou ukazovateľa omylom môže rýchlo zaplniť voľnej pamäte s neprístupná dáta , čo spôsobuje pretečeniu pamäte .
null ukazovátka

ukazovatele , ktoré neodkazujú na adresu v pamäti sa nazývajú " null " ukazovatele . Zatiaľ čo oni slúži užitočné funkcie v programovaní ( ako znamenať chyby pridelenie pamäte) , hlavný problém nastane , keď " dereferencing " nulový ukazovateľ ( dereferencing ukazovateľ znamená , že prístup k dátam v pamäti odkazuje ukazovateľ ) . Keď je napísaný program , žiadne bezpečnostné kontroly zvládnuť dereferencing z nulového ukazovateľa . V skutočnosti môže byť veľký program , len náhodou dereferencia nulového ukazovateľa , niekde hlboko v miliónoch riadkov kódu . Pri spustení kódu , však, dereferenced nulový ukazovateľ spôsobí program zrútenie .
Buffer Overflow

pamäť prekročení ( alebo " buffer overflow " ) nastáva , keď nie je dostatočne veľká pre vstup dostane pamäti pridelenej ukazovateľ . Napríklad , v prípade , že program , prideľuje pamäť slovo dlhú sedem znakov a prijíma ako vstupné slovo dlhý deväť znakov , na ďalšie dva znaky sú uložené v pamäti mimo sedem znakov ukazovateľ pamäti . Medzi ďalšie dva znaky prepísať nič v nich obsiahnutých . Neexistuje žiadny spôsob , ako program vedieť , čo existuje v tých ďalších dvoch pamäťových miest . Tie by mohli obsahovať citlivé údaje o programe ( napríklad premenné programu ) , alebo dokonca aj na samotnom počítači . To vedie k " poškodeniu dát , " údaje , ktoré by boli neporušené mimo pridelenej pamäte je teraz ohrozená .

Najnovšie články

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