|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2006
Messaggi: 131
|
[C]posso allocare solo 3 matrici sennò il compilatore mi segmentationfaultizza..
ho problemi con l'inizializzazione di più matrici,dopo 3 volte che alloco spazio e inizializzo la struttura dati casco in un famigerato segmentation fault..
// Struttura dati matrice typedef struct matrice { int r, c; // numero di righe e di colonne char nomemat[N]; double **vett; // Puntatore al vettore contenente gli elementi }t_nmat; ////funzione che prende il nome e la stringa di elementi,alloca spazio e inizializza una nuova matrice t_nmat alloca_mat(char *nome,char elementi[]){ ......procedure varie per estrarre dall'array di char gli elementi della matrice,contare numero righe e colonne e inserire i numeri in un array di nome els[] nuova->r = m; nuova->c = n; /*inizializzazione dello spazio riservato agli elementi della matrice tramite il puntatore di t_nmat*/ nuova->vett = calloc(m,sizeof (*nuova->vett)); if (!nuova->vett){printf("spazio non allocato per i puntatori ai vettori \n");exit(1);} for (i=0; i<n; i++) { nuova->vett[i] = calloc(n, sizeof (**nuova->vett)); if (!nuova->vett[i]) { /* Errore! Rilasciamo tutto e restituiamo 0 */ printf("spazio non allocato per i vettori \n"); for (i--; i>=0; i--){ free(nuova->vett[i]); free(nuova->vett); exit(1); } } }//chiusura ciclo di inizializzazione spazio per gli elementi della matrice count = 0;//reinizializzo count e lo uso per scorrere l'array els[] con gli elementi for(i=0;i<m;i++){ for(j=0;j<n;j++){ nuova->vett[i][j] = els[count]; count++; } } return *nuova; } nel main di prova inizializzo e inserisco matrici in un array di tipo t_nmat int main(void){ char dati1[N] = "1 2 3 4 ; 5 6 7 8 ; 1 2 4 6 ;"; char dati2[N] = "3.4 2.5 3 6 8 ; 4 6 89 12 10 ;"; char dati3[N] = "1 2 ; 3 45 ; 12 1 ; 12 8 ;"; alloca_mat("gigi",dati1); alloca_mat("marco",dati2); alloca_mat("giuseppe",dati3); return 0; } RISULTATO:con delle stampe di controllo noto che per due matrici tutto va bene,però la terza me la crea e restituisce un segmentation fault. se per esempio ne creo 4,la quarta non la considera nemmeno perchè per come ho scritto il codice alla terza matrice vado fuori con la gestione della memoria. non capisco perchè.. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:48.



















