| Hjem | Hardware | Netværk | Programmering | software | Fejlfinding | systemer | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringssprog
  • Delphi programmering
  • Java programmering
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl programmering
  • Python Programming
  • Ruby Programming
  • Visual Basics Programmering
  •  
    Computer Viden >> Programmering >> C /C + + Programming >> Content
    Hvordan til at forebygge Memory utætheder i C + +
    A hukommelsesfejl er en type programmering bug, der opstår, når et program allokerer mere hukommelse end den frigør . På denne måde kan et program løber tør for hukommelse og få systemet til at gå ned. For at forhindre memory leaks , du behøver at vide , når de forekommer hyppigst , og være samvittighedsfulde med din brug af den "nye" og "Slet" C + + operatører. Ting du skal
    Færdigheder i C + + Online C + + compiler
    Debugger og andre efterforskningsmæssige software værktøjer
    Vis Flere Instruktioner
    1

    Forstå operatør basics. The C + + operatør " nye" allokerer bunke hukommelse. Den " delete " operatør frigør bunke hukommelse. For hver "nye ", skal du bruge en " delete ", så du frigøre den samme hukommelse, du tildelte : .
    Char * str = new char [30 ] //afsætte 30 bytes til at huse en streng < br > delete [ ] str. //Clear de 30 bytes og gøre str punkt intetsteds
    2

    Omfordeling hukommelsen, hvis du har slettet . . I koden nedenfor, erhverver str en ny adresse med den anden tildeling. Den første adresse er tabt uigenkaldeligt , og så er de 30 bytes , at det pegede på . Nu er de umulige at gratis, og du har en hukommelsesfejl : .
    Char * str = new char [30 ] //Give str en hukommelse adresse
    //delete [ ] str ; //fjern den første kommentar mærkning i denne linje for at rette
    str = new char [60 ] . . //Give str anden memory -adresse med den første væk for evigt
    delete [ ] str. //dette sletter 60 bytes , ikke bare de første 30 .
    3

    Watch disse pointer opgaver. Hver dynamisk variabel ( allokerede hukommelse på heapen ) skal være forbundet med en pegepind . Når en dynamisk variabel bliver adskilles fra dets pointer (r) , bliver det umuligt at slette . Igen, dette resulterer i en hukommelsesfejl :
    char * str1 = new char [ 30]
    char * str2 = new char [40 ]
    strcpy ( str1 , "Memory lækage " ) ,
    str2 = str1 //Bad ! Nu de 40 bytes er umulige at gratis
    delete [ ] str2 ; . //Dette sletter de 30 bytes
    delete [ ] str1 , . //Eventuel adgang krænkelse . Hvad en katastrofe!
    4

    Vær forsigtig med lokale pointere. En pointer du erklærer en funktion fordeles på stakken , men den dynamiske variabel den peger på fordeles på bunke. Hvis du ikke sletter den, vil den fortsætter efter programmet afsluttes fra den funktion : Hej void Leak ( int x ) {
    char * p = new char [x ]
    //delete [ ] p ; . //fjern den første kommentar mærkningen på rette
    }
    5

    Vær opmærksom på de firkantede parenteser efter "slet ". Brug " delete " af sig selv for at frigøre et enkelt objekt . Brug " delete" [ ] med firkantede parenteser for at befri en bunke array. Må ikke gøre noget som dette : Hej char * én = new char ,
    delete [ ] one //Forkert
    char * mange = new char [ 30]
    slette mange ; ! //Forkert

    Forrige :

    næste :
      Relaterede artikler
    ·Hvordan man skriver et program i C for metriske konvert…
    ·Sådan Pass fælles blok variable til C 
    ·Sådan oprettes en If Else erklæring i C 
    ·Hvordan man kompilerer et C + + i Dev -C 
    ·Sådan Læs numre fra filer i C 
    ·Sådan bruges strstr Funktion i C + + 
    ·Sådan Konverter Alfabetiske Strings i C + + 
    ·Sådan bruges Skeleton Filer i OGRE 
    ·Sådan læses en antal tegn fra filer i CPP 
    ·Sådan Indsæt en forsinkelse i sekunder for C + + 
      Anbefalede Artikler
    ·Sådan Opdater Cookies Via JavaScript 
    ·Sådan justeres Form Størrelser i Visual Basic 2005 
    ·Sådan placere tekst over et billede fil i HTML 
    ·Sådan konverteres fra String til Char i C + + 
    ·Hvordan man laver en Toolbar til Visual Basic dukke op …
    ·Visning af en meddelelse i C + + 
    ·Hvordan til at omskrive en Root domæne til default.asp…
    ·Hvilke programmer Brug Python 
    ·Hvordan man skriver en variabel til en tekstfil i SSIS 
    ·Sådan tælle, hvor mange linjer kode dig Har 
    Copyright © Computer Viden http://www.computerdk.com