grazie per la risposta. Provo a darti maggiori info. Ho una struttura dati grafo così fatta presente nella libreria libgraph
dichiarata in libgraph.h
typedef struct
{
unsigned int *vertices;
unsigned int **weight;
unsigned int num_vertices;
}graph;
La matrice incriminata è weight.
Creo ed alloco lo spazio necessario al grafo con la funzione dichiarata in libgraph
graph* init_graph(value num_vertices)
{
int i;
graph *g;
g = (graph *)malloc(sizeof(graph));
g->num_vertices = num_vertices;
g->vertices = (vertex *)malloc(g->num_vertices*sizeof(vertex));
g->weight = (value **)calloc(g->num_vertices,sizeof(value));
for(i=0;i<g->num_vertices;i++)
g->weight[i]=(value *) calloc(g->num_vertices,sizeof(value));
return g;
}
Nel mio codice dichiaro un puntatore al grafo
graph *g;
alloco lo spazio necessario chiamando la funzione di prima
g = init_graph(8)
ed inizializzo la matrie così
for(i = 0; i < 8/*g->num_vertices*/; i++)
for(l = 0; l < 8/*g->num_vertices*/; l++)
{
g->weight[i][l] = 0;
}
Il problema risiede proprio in quest ultimo pezzo di codice. Ad un certo punto, mentre il programma inizializza la matrice, si interrompe con un segment fault. Tra l'altro l'errore non capita nemmeno ai "bordi" della matrice il che farebbe pensare che si cerca di accedere ad uno spazio di memoria non allocato. Ripeto il codice su una macchina a 32bit funziona bene

Rispondi quotando