Come creare e distruggere gli oggetti

September 5

C ++ offre agli sviluppatori di software due filosofie per la creazione e la distruzione di oggetti - statici e dinamici. Nei programmi restrittivi oggetti devono essere conservati nella memoria dello stack. Stack o memoria statica è efficiente e la gestione della memoria viene effettuata automaticamente dal compilatore. Nei programmi user-driven oggetti devono essere conservati in memoria heap. Heap o memoria dinamica, anche se lentamente, è completamente gestibili dal programmatore. È l'area di scelta per la memorizzazione di dati in applicazioni complesse in cui il flusso del programma è dettato dall'utente.

istruzione

Le variabili in Stack di memoria

1 Specificare il tipo di dati per creare e dargli un nome di variabile e di un numero. Le parentesi graffe vicine definiscono la portata della tua variabile. Se è dichiarata al di fuori di qualsiasi bretelle allora la sua portata è globale per quel file. Nel seguente esempio, 10 locazioni di memoria di tipo "int" sono allocate nella pila. Esempio: "int arr [10] = {0};"

2 Elaborare la variabile.

3 Non fare nulla per distruggere l'oggetto variabile. Questo avverrà automaticamente dal compilatore volta esecuzione del programma esce del campo di applicazione di questa variabile.

Le variabili in memoria heap

4 Utilizzare l'operatore "nuova" per specificare il tipo di dati per creare e un numero. Nell'esempio 1, 10 posizioni di memoria per il tipo "int" sono stati creati in memoria heap. Il codice è legale, ma impossibile da usare perché nessun nome di etichetta o variabile è stato loro assegnato. Esempio 2 mostra la dichiarazione corretta. Esempio 1: "new int [10];" Esempio 2: "int * arr = new int [10];"

5 Elaborare la variabile.

6 Inserisci una riga di codice con l'operatore "cancella" per liberare la memoria allocata e equiparare il nome della variabile a NULL. Esempio: "delete [] arr; arr = NULL;"

Consigli e avvertenze

  • Non specificando un numero crea una variabile sia in pila o heap.
  • Utilizzare i puntatori intelligenti o altri meccanismi di raccolta dei rifiuti per assicurare una corretta raccolta dei rifiuti nella memoria dinamica.
  • Utilizzare "delete" sull'oggetto solo nome della variabile originale. Si potrebbe utilizzare le variabili puntatore per puntare anche a quella posizione di memoria. Non usare "delete" su quelli.
  • Non usare "eliminare" a meno che non si è certi che l'oggetto nome della variabile originale non è nullo. Utilizzare il seguente codice per controllare. "If (! Arr = null) {delete [] arr;}"