Visualizzazione dei risultati da 1 a 4 su 4

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    32

    [C++]Delucidazioni New E Delete nell'Allocazione Dinamica

    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 :

    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;
    Giusto?

    Mentre se devo allocare dinamicamente una matrice e poi dopo averla stampata a video disallocarla dovrei fare :

    codice:
    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.
    Sarei lieto se qualcuno di voi potesse dirmi se quanto ho detto e giusto e chiarirmi meglio l'uso di new e delete ,grazie in anticipo
    Ultima modifica di Warioss; 24-01-2016 a 16:44

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.