linux user group brescia

immagine del castello

Archivio della mailing list

Allocazione dinamica in C

Bauno bauno a inwind.it
Mer 29 Dic 2004 13:16:13 UTC
On Wednesday 29 December 2004 12:39, Nicola wrote:
> Qualcuno mi sa dire come si fa in C ad allocare dinamicamente un array
> bidimensionale [n][m]?

Crei un vettore di n int* (righe), e poi allochi dinamicamente le colonne...

int **P;

p=malloc(n*sizeof(int*));

for (int i = 0; i < n ; i++) 
	p[i]=malloc(m*sizeof(int));



> In rete trovo solo esempi che mi allocano dinamicamente vettori
> monodimensionali [n]:

Può dipendere dal fatto che, in genere, si tende ad allocare vettori 
n-dimensionali come un vettore mono-dimensionale, per poi accedere ai loro 
elementi "come se fossero matrici"...

Nel tuo caso ad esempio potresti fare una cosa del genere:

int *p;

p=malloc(n*m*sizeof(int));

Poi invece di p[i][j] usi:

*(p+m*i+j)

Il primo modo è + semplice da maneggiare, il secondo è prestazionalmente + 
favorevole.


> Con l'allocazione dinamica si può allocare tutta la ram che si vuole, 

Beh, cerca di non esagerare...;)


-- 
Bauno - Eurydices, oro, properata retexite fata!
God is real, unless declared integer




Maggiori informazioni sulla lista Lug