Array ordinario
Un array può essere creato nella memoria normale come segue:
char arr [] = 'p', 'q', 'r', 's', 't';Per eliminare questo array, lascialo andare fuori dalla portata.
Array di negozi gratuito
Un array può essere creato in modo dinamico, durante l'esecuzione del programma, nel negozio gratuito. Tale array può essere creato come segue:
char *ptr = new char [5] 'p', 'q', 'r', 's', 't';Lo stesso array può essere creato nella funzione principale C ++ come segue:
char *ptr = new char [5];Nota dell'uso dell'operatore, nuovo, qui. Il PTR è un puntatore. ARR sopra è anche un puntatore ma è stato avvicinato da un angolo diverso. Per eliminare questo array, utilizzare l'operatore, eliminare [] come mostrato di seguito. L'array in negozio gratuito non può essere eliminato lasciandolo uscire dall'ambito. Quindi, deve essere eliminato con l'operatore Elimina [].
Questo articolo illustra i diversi modi di eliminare un array creato in due modi.
Contenuto dell'articolo
- Eliminazione di un array ordinario
- Eliminazione di puntatori creati dinamicamente di negozio gratuito
- Conclusione
Eliminazione di un array ordinario
Per eliminare un normale array, lascialo andare fuori portata. Sebbene la funzione principale () sia la funzione capitale di un programma C ++, è ancora una funzione. Nel seguente programma, un array viene creato in un ambito locale nidificato (blocco) nella funzione principale C ++:
#includereL'output è, q. L'ambito nidificato è il blocco della costruzione IF. L'array è stato creato in questo blocco e utilizzato nello stesso blocco stampando il secondo valore dell'array. Alla fine del blocco, la variabile dell'array muore. Se viene rimosso l'indicatore di commento appena sotto il blocco, il programma non verrà compilato, verrà emesso un messaggio di errore. Questo sarà dovuto al fatto che l'array è morto alla fine del blocco.
Il seguente programma, illustra una cosa simile, ma in una funzione, chiamata fn ().
#includereL'output è ancora, q. Se viene rimosso l'indicatore di commento appena sotto il blocco funzione, il programma non si compilerà e verrà emesso un messaggio di errore. Questo sarà dovuto al fatto che l'array è morto alla fine del blocco funzione (portata). Inoltre, si noti che l'assegnazione dopo la dichiarazione non è consentita nell'ambito globale.
Eliminazione di puntatori creati dinamicamente di negozio gratuito
Poiché l'assegnazione dopo la dichiarazione non è consentita nell'ambito globale, l'array nel negozio gratuito verrà eseguito in un ambito nidificato al blocco di funzioni principali C ++ che è illustrato di seguito. L'operatore ELETE [] viene utilizzato nell'ambito nidificato, per eliminare l'array, come segue:
#includereL'output è una "Q", dalla prima istruzione Cout. Si noti che il nome dell'array, PTR, come argomento (parametro) dell'operatore di eliminazione. L'array, PTR per il negozio gratuito, viene dichiarato, utilizzato ed eliminato con l'operatore "Elimina [] ()" nello stesso ambito nidificato. Se viene lasciato fuori dall'ambito, senza "Elimina [] PTR", non sarebbe davvero eliminato perché è nel negozio gratuito. Tale array deve essere eliminato nel suo ambito, dopo l'uso con l'operatore Elimina []. L'eliminazione con l'operatore ELETE [] deve essere eseguita per l'array dinamico per liberare la memoria (evitare la perdita di memoria).
Il seguente programma illustra una cosa simile, ma nell'ambito della funzione principale C ++:
#includereL'output è ancora, Q come dovrebbe, con l'indice. Tutto il codice di interesse è direttamente nella funzione principale C ++. Sebbene la funzione principale () sia la funzione capitale di un programma C ++, è ancora una funzione dell'ambito di funzione o del blocco delle funzioni.
Inclusione dell'intestazione della biblioteca
Come notato sopra, nessuna libreria è stata inclusa per l'uso degli operatori nuovi o eliminati. Tuttavia, i nuovi e elimina gli operatori sono nella nuova libreria, che è implicitamente incluso. I nuovi e elimina gli operatori sono dell'ambito globale. La biblioteca può ancora essere inclusa come nel seguente programma per l'array ordinario:
#includereIl programma funziona senza alcun problema. La libreria può ancora essere inclusa, come nel seguente programma, per un array di puntatore dinamico nel negozio gratuito:
#includereIl programma funziona senza alcun problema. Nota: incluso il nuovo intestazione (biblioteca) non è obbligatorio.
Conclusione
Per eliminare un normale array, lascialo andare fuori portata. Per eliminare una matrice dinamica di puntatore di negozio gratuito, utilizzare l'operatore, eliminare [] ArrayName, nello stesso ambito. L'operatore elimina l'array può avere un secondo e terzo argomento. Tuttavia, questa è una discussione per qualche altra volta.