| Home  | Casa  | Hardware  | Networking  | Programmazione  | Software  | Domanda  | Sistemi  |   
Programmazione  
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Java Programming

  • Programmazione Javascript

  • PHP /MySQL Programmazione

  • Perl Programming

  • Python Programming

  • rubino Programmazione

  • Nozioni di base di Visual Programming
  •  
    Conoscenza Informatica >> Programmazione >> C /C + + Programming >> Content
    Come prevenire le perdite di memoria in C + +
    Una perdita di memoria è un tipo di bug di programmazione che si verifica quando un programma alloca più memoria di quanto non libera . In questo modo, un'applicazione può esaurire la memoria e causare il blocco del sistema . Per evitare perdite di memoria , è necessario sapere quando si verificano più frequentemente e di essere coscienzioso con l'utilizzo del "nuovo" e " delete " operatori C + + . Cose che ti serviranno
    Proficiency in C + + Commercio compilatore C + +
    debugger e altri strumenti di indagine software
    Mostra più istruzioni
    1

    capire le basi operatore . Il C + + operatore "new " memoria heap allocata . L'operatore "delete" libera la memoria heap . Per ogni " nuovo", è necessario utilizzare un "delete ", in modo da liberare la stessa memoria è allocato: .
    Char * str = new char [ 30 ] ; //assegnare il 30 byte per ospitare una stringa
    delete [ ] str ; //Cancella i 30 byte e fare str punto nulla
    2

    riallocare la memoria solo se hai eliminato . . Nel codice qui sotto , acquisisce str un nuovo indirizzo con la seconda assegnazione . Il primo indirizzo è perso irrimediabilmente , e così sono i 30 byte che puntasse a . Ora sono impossibili da libero , e si ha una perdita di memoria : .
    Char * str = new char [ 30 ] ; //str Dare un indirizzo di memoria
    //delete [ ] str ; //Rimuovere il primo commento marcatura in questa linea per correggere
    str = new char [ 60 ] ; . . //Dare str un altro indirizzo di memoria con il primo andato per sempre
    delete [ ] str ; //questo cancella la 60 byte , non solo il primo 30 .
    3

    guardare quelle assegnazioni puntatore . Ogni variabile dinamica ( memoria allocata nell'heap ) deve essere associata con un puntatore . Quando una variabile dinamica diventa dissociato dal suo puntatore ( s ) , diventa impossibile da cancellare . Ancora una volta , questo si traduce in una perdita di memoria :
    char * str1 = new char [ 30] ;
    char * str2 = new char [ 40 ] ;
    strcpy ( str1 , " Perdita di memoria " ) ;
    str2 = str1 ; //Bad ! Ora i 40 byte sono impossibili da free

    Previous :

    next :
      Articoli Correlati
    ·Come creare una lista collegata in C 
    ·Come ritornare alla funzione principale in C + + 
    ·Come aprire più file in ingresso e uscita in C + + 
    ·Come convertire da String a Char in C + + 
    ·Come collegare il flusso di ingresso List su C + + 
    ·Come mostrare le immagini in Silverlight Datagrid 
    ·Come leggere un file di ListBox in C # 
    ·Come stampare puntatori in C 
    ·Codice C per un bit di conversione Byte 
    ·Come convertire un numero in un carattere utilizzando C…
      Articoli in evidenza
    ·Come creare un gioco dell'impiccato con Java 
    ·Come creare un array in PHP 
    ·Come visualizzare un file come Hex 
    ·Vantaggi e svantaggi della programmazione orientata agl…
    ·Come cancellare le variabili di sessione 
    ·Tutorial di programmazione Prolog 
    ·Come scrivere uno script per catturare email 
    ·Come catturare un utente SQL blocco di a Oracle 
    ·L'accesso al percorso è negato in Visual Studio 2010 
    ·Come contare le occorrenze di un carattere in una strin…
    Copyright © Conoscenza Informatica http://it.wingwit.com