Salve a tutti.
Mi sto avvicinando adesso alla programmazione C e sto cercando di comprenderne le basi.
La mia domanda è forse un po' "stupida" ma vorrei capire meglio l'allocazione dinamica della memoria.
Ho scritto questo semplice programma usando malloc() per creare un array bidimensionale di double:
codice:
#define oops(s) { perror((s)); exit(EXIT_FAILURE); }
#define MALLOC(s,t) if( ((s) = malloc(t)) == NULL) { oops("error malloc(): "); }
#define INCREMENT 10
/* Tutorial 3
* dynamic memory allocation
*/
int main (int argc, const char * argv[]) {
double **xyz;
int j;
MALLOC(xyz, sizeof(double *) * INCREMENT);
for(j=0; j < INCREMENT; j++) {
MALLOC(xyz[j], sizeof(double) * 3);
}
xyz[0][0] = 0;
xyz[0][1] = 1;
/* .... */
}
Se non ho capito male ho creato così un array di 10 posizioni, ogni posizione contiene un puntatore a un array di tre elementi.
A questo punto se provassi ad assegnare xyz[0][4] = 4 dovrebbe darmi errore o non fare l'assegnazione o sbaglio (cosa che non fa)? In caso contrario allora l'allocazione di memoria a cosa serve esattamente?
grazie