Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Programmering >> C /C + + Programming >> Content
Hoe Memory lekken voorkomen in C + +
Een geheugenlek is een soort programmering bug die optreedt wanneer een programma toewijst meer geheugen dan het bevrijdt . Op deze manier kan een toepassing opraken van het geheugen en zorgen dat het systeem crasht . Om het geheugen lekken te voorkomen , moet u het vaakst weten wanneer ze zich voordoen en worden nauwgezet met uw gebruik van de " nieuwe " en " delete " C + + operatoren . Wat je
Vaardigheid in Need C + +
C + + compiler
Debugger en andere opsporingsdiensten software tools
Toon Meer Aanwijzingen
1

Begrijp de exploitant basics . De C + + operator " nieuwe " toewijst heap geheugen . De " delete "-operator bevrijdt heap geheugen . Voor elke " nieuwe , ' je moet een " delete " te gebruiken , zodat u dezelfde geheugen toegewezen bevrijden : .
Char * str = new char [ 30 ] ; //toewijzen 30 bytes naar een string te huisvesten < br > delete [ ] str ; //Clear die 30 bytes en maak str punt nergens
2

Herallocatie geheugen alleen als u hebt verwijderd . . In de onderstaande code , verwerft str een nieuw adres met de tweede toewijzing . Het eerste adres is onherroepelijk verloren , en dus zijn de 30 bytes dat het wees op . Nu zijn ze onmogelijk te vrij , en je hebt een geheugenlek : .
Char * str = new char [ 30 ] ; //Geef str een geheugenadres Twitter //delete [ ] str ; //Verwijder de eerste reactie markering in deze lijn te corrigeren
str = new char [ 60 ] ; . . //Give str ander geheugenadres met de eerste voorgoed verdwenen
delete [ ] str ; //Hiermee wordt het 60 bytes , niet alleen de eerste 30 .
3

Let op die pointer opdrachten. Elke dynamische variabele ( toegewezen geheugen op de heap ) moet worden verbonden met een wijzer . Wanneer een dynamische variabele wordt losgekoppeld van de pointer ( s ) , wordt het onmogelijk om te wissen . Nogmaals, dit resulteert in een geheugenlek :
char * str1 = new char [ 30 ] ;
char * str2 = new char [ 40 ] ;
strcpy ( str1 , "Memory lek " ) ;
str2 = str1 ; //Bad ! Nu is het 40 bytes zijn onmogelijk te vrije beelden delete [ ] str2 ; . //Dit wist de 30 bytes
delete [ ] str1 ; . //Mogelijke toegang overtreding . Wat een ramp !
4

Wees voorzichtig met lokale pointers . Een pointer verklaart u in een functie wordt toegewezen op de stapel , maar de dynamische variabele het wijst op wordt toegewezen op de heap . Als je het niet verwijdert , zal het blijven bestaan ​​nadat het programma verlaat de functie :
leegte Leak ( int x ) {
char * p = new char [ x ] ; Twitter //delete [ ] p ; . //verwijder de eerste reactie markering te corrigeren
}
5

Let op de rechte haken na " verwijderen . " Gebruik " delete " op zichzelf om een enkel object te bevrijden . Gebruik de " delete " [ ] met vierkante haken op een hoopje matrix bevrijden . Doen iets niet doen als dit :
char * een = new char ;
delete [ ] een; //Wrong
char * vele = new char [ 30 ] ;
verwijderen vele ; ! //Wrong

Previous: Next:
  C /C + + Programming
·Hoe een String stappen op een …
·Hoe te Volumetrische Mist in O…
·Hoe om te controleren een POP3…
·Hoe te Allegro Visual Install …
·Hoe maak je een vierkantsworte…
·Hoe je globale variabelen voor…
·Hoe u Microsoft Visual C + + i…
·Hoe te Quick Sort -functie in …
·Hoe maak je een mobiele applic…
  Related Articles
Hoe maak je een Combo Box Maak in Visual…
Hoe maak je een Check Box Maak in Visual…
Hoe maak je een tekstvak maken in Visual…
Hoe maak je een optie Box in Visual Basi…
Hoe maak je een schijf keuzelijst in Vis…
Hoe kan ik een keuzelijst maken in Visua…
Hoe kan ik een Picture Box Maak in Visua…
Hoe een bestand keuzelijst Maak in Visua…
Hoe kan ik een afbeelding Box Maak in Vi…
  Programmering Articles
·Hoe een bestand in coderen C # 
·Hoe te Inspringen maken in C + + 
·Hoe om te leren Flash Code 
·Hoe maak je een driehoek binnen een drie…
·Hoe maak je een CAPTCHA Code Maak 
·Hoe te stackoverloop Detect 
·Hoe om uw account wijzigen wachtwoord me…
·Hoe schrijf je een tekst Based Game scri…
·Hoe u een Online Bookstore database-ontw…
Copyright © Computer Kennis http://www.nldit.com