Ok grazie questo sicuramente è un passo avanti , cmq quando provo ad accedere direttamente alla vettore char (cioè la riga della matrice ,il nome utente) per esempio m[0][0] avviene Segmentation fault
Questo è l'operazione con cui conquisto la memoria
idPlayer = shmget(KEYp,sizeof(char[MAX-CHAR-NAME])*MAX-USER,IPC_CREAT|0666);
Quindi così ottengo uno spazio pari ad char[MAX-CHAR-NAME])*MAX-USER
Poi faccio m=(char**)shmat(idPlayer,NULL,0);
In questo modo m si comporta come un'array di puntatori , effettivamente m[i] punta ad una locazione di memoria .
Ok fino a qui ci siamo , ma io quando dovevo allocare una matrice in memoria locale con malloc
per esempio una matrice di int M [ r ][ c ]
dovevo prima allocare il set delle righe M= (int**)malloc( r * sizeof(int) );
ed poi allocare singolarmente ogni array
for(i=0; i<r; i++)
M[i] = (int*)malloc( c,sizeof(int) );
Non dovrei riuscire a fare qualcosa di simile anche con la memoria condivisa?