| maison  | Hardware  | réseaux  | programmation  | Logiciel  | Dépannage  | systèmes |  
programmation  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    Connaissances Informatiques >> programmation >> C /C + + Programming >> Content
    Comment prévenir les fuites de mémoire en C + +
    Une fuite de mémoire est un type de bug de programmation qui se produit lorsqu'un programme alloue plus de mémoire qu'il libère . De cette façon , une application peut manquer de mémoire et causer un crash du système . Pour éviter les fuites de mémoire , vous devez savoir quand ils se produisent plus fréquemment et être consciencieux avec votre utilisation du " nouveau " et "Supprimer " C + + opérateurs. Choses que vous devez
    maîtrise de C + +
    compilateur C + +
    débogueur et d'autres outils d'investigation logiciel
    Voir Plus Instructions
    1

    comprendre les bases de l'opérateur. L' opérateur C + + "nouveau" alloue de la mémoire de tas. L'opérateur "delete" libère la mémoire de tas. Pour chaque «nouveau», vous devez utiliser un "delete" de sorte que vous libérez la même mémoire que vous avez alloué : . Char * str = new char [ 30] ; //Allouer 30 octets pour abriter une chaîne
    delete [] str //Effacer les 30 octets et faire str point de nulle part
    2

    Redistribuer mémoire que si vous avez supprimé . . Dans le code ci-dessous, acquiert str une nouvelle adresse avec la deuxième allocation . La première adresse est perdue irrémédiablement , et sont donc les 30 octets qu'il pointé . Maintenant, ils sont impossible à la liberté , et vous avez une fuite de mémoire : . Char * str = new char [ 30] ; //str Donnez une adresse mémoire
    //delete [] str ; //Supprimer le premier commentaire marquer dans cette ligne pour corriger
    str = new char [ 60] ; /.. /Donnez str autre adresse mémoire avec le premier disparu à jamais
    delete [] str //ceci efface le 60 octets , et pas seulement les 30 premiers .
    3

    Regardez les assignations de pointeur. Chaque variable dynamique ( mémoire allouée sur le tas ) doit être associé à un pointeur. Quand une variable dynamique devient indissociable de son pointeur (s) , il devient impossible à effacer. Encore une fois, cela se traduit par une fuite de mémoire : char * str1 = new char [ 30] ;
    char * str2 = new char [ 40] ;
    strcpy ( str1 , " fuite de mémoire" ) ;
    str2 = str1 ; //Bad ! Maintenant, les 40 octets sont impossibles à free photos delete [] str2 ; . //Ceci efface les 30 octets
    delete [] str1 ; . //Possible violation d'accès . Quel désastre !
    4

    Soyez prudent avec les pointeurs locaux. Un pointeur que vous déclarez dans une fonction est alloué sur la pile, mais la variable dynamique il pointe est alloué sur le tas . Si vous ne supprimez pas , elle va persister après la fermeture du programme de la fonction : vide fuite (int x ) {
    char * p = new char [ x] ;
    //delete [] p ; . //Suppression de la première observation de marquage pour corriger
    }
    5

    Faites attention aux crochets après le mot « supprimer ». Utilisez "delete" par lui-même de libérer un objet unique. Utilisez "delete" [] avec crochets pour libérer un tableau de tas. Ne pas faire quelque chose comme ceci: char * un = new char ;
    delete [] une //Mauvais
    char * nombre = new char [30] ;
    supprimer plusieurs ; ! //faux

    Previous :

    next :
      articles connexes
    ·Comment écrire un fichier Hex 
    ·Comment apprendre la bibliothèque STL 
    ·Définition de la fonction C + + String 
    ·Comment faire Brouillard volumétrique en Open GL 
    ·Comment obtenir une valeur de cellule GridView 
    ·Comment graphiquement une onde sinusoïdale en C + + 
    ·Comment lire les fichiers Hex en C + + 
    ·Comment réparer Microsoft Visual C + + 
    ·Comment utiliser la fonction strerror en C + + 
    ·Comment faire un bouton cliquable en C 
      articles en vedette
    ·La taille du tampon par défaut pour BufferedWriter 
    ·Comment masquer un élément dans ListView Android 
    ·Comment calculer la largeur du texte avec Python 
    ·Comment cacher un programme en AppleScript 
    ·Comment utiliser une minuterie dans une DLL VB6 
    ·Comment créer un MSI personnalisé 
    ·Comment faire pour rediriger une URL en PHP 
    ·Comment naviguer à partir de la fenêtre modale jQuery…
    ·Comment faire un DIV Visible avec un rouleau en JavaScr…
    ·Comment autoriser PHP pour écrire dans le fichier 
    Copyright © Connaissances Informatiques http://fr.wingwit.com