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