Allocare dinamicamente memoria

whitesnowflake
vorrei allocare dinamicamente un array tridimensionale (3 x 3 x3 ) di double con il c++

nel caso di una matrice so che:




double**p=new double* [3];
for (int i;i<3;i++){
p=new doulbe [3];
}


for (int i;i<3;i++){
delete [] p;
}

delete[] p;

[quote]


come posso allocare e deallocare nel caso posto all'inizio?
sapreste suggerirmi un libro in cui magari si spiega questo esempio?infatti in tutti i libri si spiega solo come allocare e deallocare un semplice vettore
[/quote]

Risposte
apatriarca
Bhe, volendo usare una soluzione simile alla precedente verrebbe
double ***p = new double** [3];
for (int i = 0; i < 3; ++i) {
    p[i] = new double* [3];
    for (int j = 0; j < 3; ++j) {
        p[i][j] = new double[3];
    }
}

e un codice ugualmente terrificante per la deallocazione della memoria. Ma questa soluzione (e la precedente per le matrici) fa un pessimo uso della memoria. Allochi infatti una quantità enorme di "piccoli" array invece di allocarne uno grosso come sarebbe più efficiente. E' per questo che normalmente si usa un array monodimensionale al quale si accede con tre indici con qualche calcolo aritmetico.

whitesnowflake
sei un grande;
sia per la prima che per la seconda soluzione.
ascolta visto che mangi pane e c++ sapresti consigliarmi un libro dove posso imparare bene il c++ o dove si possono trovare esempi come quello che mi hai spiegato tu?
grazie

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.