Connaissances Informatiques >> programmation >> C /C + + Programming >> Content
  Derniers articles
  • Comment compiler un RPC sur DOS 
  • Précautions pour les dépassements …
  • Comment écrire votre jeu propre pro…
  • Comment faire pour démarrer un code…
  • Comment sauver un vecteur dans un fi…
  • Les avantages de prototypes de fonct…
  • Comment compiler des codes C dans le…
  • Différence entre fgetc et getc 
  • Comment compter les fonctions dans l…
  • Comment compiler C + + dans Prompt 
  •   C /C + + Programming
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    C /C + + Programming

    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

     
    Article précédent:
    Article suivant:
    Articles recommandés
  • Visual C Component Object Model Tutorial 
  • Comment concevoir éditeur utilisation d'OpenGL 
  • Comment faire pour créer des textures personnalisées dans GtkRadiant 
  • Comment trouver la taille d'un tableau de char qui a une Chaîne 
  • Longueur de corde sans Construit en fonction en C + + 
  • Comment fermer une boucle For en C + + 
  • Code C pendant Bits de conversion Byte 
  • Comment vérifier si un tableau possède une valeur ou pas en C + + 
  • C Fonctions pour Xilinx 
  • Qu'est-ce qu'un programmeur ISO 
  • Connaissances Informatiques © http://www.ordinateur.cc