Salve a tutti, sono nuovo del forum (dopo aver passato un po' di tempo a lurkare vergognosamente :rollo: ) e vorrei porvi questo quesito: sto tentando di realizzare un programma per cui mi serva l'allocazione dinamica di una matrice. Fino a qua nessun problema, infatti anche cercando su questo sito ho trovato indicazioni interessanti. Il problema è che pur avendo fatto tutto come già visto in esempi funzionanti, qualcosa non torna, vi posto il pezzo di codice che mi interessa:

(la variabile chiamata terminale la uso come globale)

codice:
void rialloca_array(int numerorighe, int numerocolonne, int lungh_stringa, char flag)
{ 	
int i; 	
switch (flag) { 
	case TRUE:  	
	for (i=0; i<numerocolonne; i++) { 		
	terminale[i]=(char**)realloc(terminale[i], sizeof(char*)*numerorighe); 		
	terminale[i][numerorighe-1]=(char*)malloc(sizeof(char)); 		
} 		(*terminale)[numerorighe-1]=(char*)malloc(sizeof(char)*lungh_stringa); 
		break; 	
        case FALSE: 	
	terminale=(char***)realloc(terminale,sizeof(char**)*numerocolonne); 		
        terminale[numerocolonne-1][0]=(char*)malloc(sizeof(char)*lungh_stringa); 
	break; 	
    }
 }
Ora non sto a scendere nel dettaglio, la parte TRUE funziona perfettamente, quella FALSE no!

infatti io pensavo che una volta riallocato terminale con sizeof(char**)*numerocolonne, se ad esempio numerocolonne vale 2, terminale dovrebbe puntarmi a un "array" di due celle (che contengono char**), e alla seconda ci si acceda con terminale[1]. Invece il problema è che terminale[1] è NULL e non posso accedervi!

Dove sta il problema?

Edit: Usando GDB ho notato che terminale[1] è 0x0, così come terminale[2], mentre terminale[3], terminale[4] e terminale[5] sono tre puntatori diversi da NULL, anche se io ho passato alla realloc sizeof(char**)*2

Secondo Edit: mi sono reso conto di essere un pirla Probabilmente vi sto solo facendo perdere tempo, perchè è ovvio che non posso accedere a terminale[1] se non uso una malloc per allocarlo... l'unica cosa che ancora non mi spiego è perchè le celle di indice 3,4,5 risultino diverse da NULL :|