Salve a tutti!
Vorrei chiedere se qualcuno è tanto gentile da spiegarmi bene l'uso delle funzioni new e delete nell'ambito dell'allocazione dinamica.
In particolare quello che non ho capito è la differenza tra delete e delete[].
Se ho ben capito bene delete serve a cancellare oggetti semplici tipo un'istanza di un intero o un vettore mentre delete[] si usa per cancellare dei vettori di puntatori (?)
Quindi se devo allocare dinamicamente un vettore e poi dopo averlo stampato a video disallocarlo dovrei fare :
Giusto?codice:int *vet; int n; // riempimento=dim massima //Richiesta del riempimento/dimensione massima che sarà allocata run time cout<<"Quanti elementi si voglioni inserire nel vettore?\n"; cin>>n; //Alloco dinamicamente il vettore vet = new int[n]; //Specificazione tramite tastiera degli elementi dell'array dinamico for(int i=0;i<n;i++){ cout<<"Inserire l'elemento "<<i+1<<endl; cin>>*(vet+i); } //Stampa Del Vettore for(int i=0;i<n;i++) cout<<*(vet+i)<<endl; //Deallocazione del Vettore delete vet;
Mentre se devo allocare dinamicamente una matrice e poi dopo averla stampata a video disallocarla dovrei fare :
Sarei lieto se qualcuno di voi potesse dirmi se quanto ho detto e giusto e chiarirmi meglio l'uso di new e deletecodice:int **matrix; int righe; int colonne; //Richiesta all'utente di righe e colonne cout<<"Specificare righe\n"; cin>>righe; cout<<"Specificare Colonne\n"; cin>>colonne; //Allocazione Dinamica Matrice matrix = new int*[righe]; //cioe' creo un array di puntatori for(int i=0;i<righe;i++) matrix[i]=new int[colonne]; //creo ora un array di interi //Specificazione tramite tastiera degli elementi della matrice dinamica for(int i=0;i<righe;i++) for(int j=0;j<colonne;j++){ cout<<"Inserire l'elemento della righa "<<i+1<<" e della colonna "<<j+1<<endl; cin>>matrix[i][j]; } //Stampa Della Matrice for(int i=0;i<righe;i++){ for(int j=0;j<colonne;j++){ cout<<matrix[i][j]<<" "; } cout<<endl; } //Deallocazione Matrice for(int i=0;i<righe;i++) delete[]matrix[i]; //Mi cancello l'array di interi delete[]matrix; //Mi cancello l'array di puntatori.,grazie in anticipo
![]()


,grazie in anticipo
Rispondi quotando