Δυναμική διαχείρηση μνήμης στη C σε πολυδιάστατους πίνακες

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Δυναμική διαχείρηση μνήμης στη C σε πολυδιάστατους πίνακες

Δημοσίευσηαπό Τάσος_ » 13 Απρ 2010, 21:51

Χαιρετώ την κοινότητα του Ουμπούντου και καλώς με βρήκατε!

Άρχισα να ασχολούμε με τη δυναμική διαχείρηση μνήμης στη C. Τα πράγματα βαίνουν καλώς στη 1 διάσταση με το απλό pointer=malloc(x*sizeof(int)).
Θα ήθελα να ρωτήσω πως μπορεί να επεκταθεί η τεχνική αυτή και σε περισσότερες διαστάσεις;
Τάσος_
babeTUX
babeTUX
 
Δημοσιεύσεις: 6
Εγγραφή: 15 Φεβ 2010, 13:18
Εκτύπωση

Re: Δυναμική διαχείρηση μνήμης στη C σε πολυδιάστατους πίνακες

Δημοσίευσηαπό Dimitris » 13 Απρ 2010, 22:35

Πολυ απλά:
Κώδικας: Επιλογή όλων

double **a;
int rows, cols;
int i;
a = malloc(rows*sizeof(double*));
for (i=0; i<cols; i++){
a[i] = malloc(cols*sizeof(double));
}


Και φυσικά το free πρέπει να είναι:
Κώδικας: Επιλογή όλων

for (i=0; i< cols; i++){
free(a[i]);
}
free(a);


YΓ. Καλό είναι αν το χρησιμοποιείς συχνά σε αριθμητικούς υπολογισμούς να δημιουργήσεις ένα νέο struct και με typedef τον τύπο πίνακα, που θα περιλαμβάνει ένα **double, int, int και να δημιουργήσεις τις αντίστοιχες συναρτήσεις για πίνακα πλέον allocate και free. Αν θες περισσότερες πληροφορίες, ρώτα.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Δυναμική διαχείρηση μνήμης στη C σε πολυδιάστατους πίνακες

Δημοσίευσηαπό Nisok » 13 Απρ 2010, 23:16

Μετά από αρκετές δοκιμές, πιστεύω ότι καλύτερο είναι να χρησιμοποιείς vectors.
Άβαταρ μέλους
Nisok
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 2637
Εγγραφή: 25 Ιαν 2009, 15:00
Τοποθεσία: /home
IRC: nisok
Εκτύπωση

Re: Δυναμική διαχείρηση μνήμης στη C σε πολυδιάστατους πίνακες

Δημοσίευσηαπό Dimitris » 13 Απρ 2010, 23:55

Για C ρώτησε όχι C++ :mrgreen: και μετά έρχεται η ερωτηση γιατί το θέλεις. Άλλη δουλειά κάνει το vector (βλ. list) και άλλη το array, με τα αντίστοιχα πλεονεκτήματα και μειονεκτήματα.
Άβαταρ μέλους
Dimitris
saintTUX
saintTUX
 
Δημοσιεύσεις: 1357
Εγγραφή: 13 Μάιος 2008, 13:57
Τοποθεσία: Θεσσαλονίκη
Εκτύπωση

Re: Δυναμική διαχείρηση μνήμης στη C σε πολυδιάστατους πίνακες

Δημοσίευσηαπό Nisok » 13 Απρ 2010, 23:58

Ναι σωστά... C.... απο φοιτητής έχω να την χρησιμοποιήσω .. sorry :oops: :oops:
Άβαταρ μέλους
Nisok
Διαχειριστής
Διαχειριστής
 
Δημοσιεύσεις: 2637
Εγγραφή: 25 Ιαν 2009, 15:00
Τοποθεσία: /home
IRC: nisok
Εκτύπωση

Re: Δυναμική διαχείρηση μνήμης στη C σε πολυδιάστατους πίνακες

Δημοσίευσηαπό Τάσος_ » 14 Απρ 2010, 01:54

Με καλύψατε, ευχαριστώ πολύ :)
Τάσος_
babeTUX
babeTUX
 
Δημοσιεύσεις: 6
Εγγραφή: 15 Φεβ 2010, 13:18
Εκτύπωση


Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι

cron