PDA

View Full Version : [C] Allocazione dinamica matrici: malloc() o calloc() ?


ka0s
13-11-2006, 11:13
Ho scritto un programma che alloca dinamicamente (usando malloc) una matrice di 'r' righe e 'c' colonne:

/* allocazione vettore righe (ogni elemento del vettore è un puntatore) */
matrice = (int**)malloc( r * sizeof(int) );

/* Per ogni riga si allocano le colonne */
for(i=0; i<r; i++)
matrice[i] = (int*)malloc( c * sizeof(int) );

Vorrei sapere qual è la differenza nell'usare anzichè la malloc, la calloc:

matrice = (int**)calloc( r,sizeof(int) );

for(i=0; i<r; i++)
matrice[i] = (int*)malloc( c,sizeof(int) );


Cambia qualcosa sostanzialmente? Qual è piu giusto usare? (dato che funzionano tutti e due)
Di norma quando si allocano vettori non si dovrebbe usare la calloc?

tnx ;)

VICIUS
13-11-2006, 12:02
Calloc oltre ad allocare lo spazio richiesto lo inizializa con il valore 0. Nel tuo caso io userei una malloc per la prima chiamata e una calloc per le chiamate nel for in modo da avere degli array gia pronti per l'uso.

ciao ;)

ka0s
13-11-2006, 20:45
grazie! ;)