Dator
 |  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programmering
  • C /C + + -programmering
  • Computer Programspråk
  • Delphi Programmering
  • Java Programming
  • JavaScript programmering
  • PHP /MySQL Programmering
  • perl Programmering
  • python Programming
  • Ruby programmering
  • Visual Basics Programmering
  • * Dator Kunskap >> Programmering >> C /C + + -programmering >> Content

    Beskrivning av en C + + Funktion & hur det orsakar en buffer overflow

    Buffer overflow i C + + orsakas av några olika frågor . Ofta sker det som en del av driften av en funktion är avsedd för att skriva till en array eller komma djupt minne . Vanligtvis uppstår buffer overflow när en användare eller programmerare ingångar som faller utanför räckvidden för en variabel eller en matris . Funktioner som försöker gå utanför detta område kan också försöka att radera uppgifter i systemet , eller omdirigera systemet genom att ta bort eller skriva över informationen . Funktioner i C + +

    funktioner i C och C + + beter sig som förväntat , jämfört med andra programmeringsspråk . Funktioner existera , precis som alla andra variabel eller systeminformation , i minnet och refereras av adress . Funktioner , av sig själva , är bara block av kod i minnet som refereras . Eventuella fel som kastas av en funktion referens kan bero på en odeklarerat funktion eller en funktion som kallas felaktigt . En buffer overflow error skulle mer sannolikt komma från koden inuti funktionen .
    Variabler och Memory

    C + + är statiskt skrivit , vilket innebär att programmeraren måste ange en variabel typ när du deklarerar en variabel . Detta beror på C + + avsätter minne block av vissa storlekar baserade på den variabla typen. Ett heltal ( int ) variabel som deklareras i ett program kommer att få en plats i minnet avsatt specifikt för en int . Minnet blocket blir den exakta storleken på ett heltal .
    Matriser

    Arrayer är samlingar av variabler som ingår i ett namn . Exempelvis skapar arrayen nedan en lista på 10 heltal , som kan nås genom att referera ett index ( namn [ 0 ] , namn [ 1 ] , etc. ) katalog

    int namn [ 10 ] ;

    stället för ett heltal , sätter array avsätta tillräckligt sammanhängande utrymme för 10 . Men eftersom fältindex tillgång kan prövas på värden utöver vad som finns i arrayen ( namn [ 11 ] , till exempel ) , kan fel uppstå om programmeraren inte se hur hon använder arrayen .

    Buffer Overflow

    grund av arten av arrayer i C + + , kan en array inuti en funktion falla offer för buffertspill . Om användaren anger en teckeninmatning större än arrayen kan hantera, kommer extra tecken skriva över data som angränsande till matrisen i minnet. Till exempel ,

    void Exempel ( ) {

    int inloggning [ 15 ] ;

    int i = 0 ;

    while ( cin >> a [ i] ) {

    i + + ;

    }

    }

    " medan " loop aldrig kommer att sluta , och när " jag " når 15 , kommer användaren börja mata in data som skriver över minnet . Detta kan få oavsiktliga konsekvenser, såsom omplacering av en lokal variabel , eller , under särskilda omständigheter , omskrivning av funktionspekare att referera annorlunda , skadlig kod . Addera

    Tidigare:

    nästa:
    relaterade artiklar
    ·Vanliga fel i Turbo C
    ·Hur man läser en fil till ListBox i C #
    ·Hur man använder LINQ till XML
    ·Hur man skriver ett C + + program som beräknar den gen…
    ·Lägga till ett attribut till nod i C #
    ·Hur initiera Pekare
    ·Vad är Microsoft Visual C + +
    ·Hur man skapar en länkad lista i C
    ·Hur man använder C + + för att skriva en kod för att…
    ·Så här visar en rätvinklig triangel med tal i C -pro…
    Utvalda artiklarna
    ·Hur Time VBA-funktioner
    ·Hur man ansluter ett byte till ett Word -adress
    ·Hur till Öppen VBS -filer
    ·Hur man använder Zend Autoloader
    ·HTML Formulär Validering Tutorial
    ·Hur du skapar PDF-filer med C källkod
    ·Hur får POST-data från Apache2 mod_perl
    ·Hur man beräknar Time Method i Visual Basic
    ·Hur vill kolla om en textruta är tomt i VB
    ·Hur man kan stoppa ett förfarande i VB6.0
    Copyright © Dator Kunskap http://www.dator.xyz