PDA

Visualizza la versione completa : Errore C: Errore di segmentazione (core dump creato)


damaar
13-12-2013, 14:05
Ciao a tutti!
sono alle prese con l'errore "Errore di segmentazione (core dump creato)". Di solito accade (mi pare) quando si accede ad un puntatore nullo, ma nel mio caso avviene non appena va in esecuzione il programma.
Mi spiego, ho il mio programma (con tanto di main.c header.h e functions.c), gi linkato e compilato, solo che non appena eseguo ottengo l'errore di segmentazione:


hino@hino-X51L:~/NetBeansProjects/Room_Assignment$ ./a.out 6
Errore di segmentazione (core dump creato)

Per capire quale riga dia il problema ho inserito nel codice una printf() che, a partire dall'inizio del main, sposto in gi.


int main(int argc, char** argv) {

printf("Fin qui tutto bene!");

int N; // Number of people
struct room *a, *b;
int i, j;
int exit = 0;
float **d; // N x N matrix containing the coefficient of affinity of each pair of people
int size; // Communicator size
int rank; // id of the current process
int choose1, choose2;
int num_solutions;
double *perf_MPI;
double *perf;
double t1, t2;

/* parameters check */
if(argc != 2){
printf("Argument error: %s not recognized as argument\n", argv[0]);
return -1;
}

N = atoi(argv[1]);
num_solutions = ldexp((pow(N,2)-N), -1);
...


L'output sempre il seguente:


hino@hino-X51L:~/NetBeansProjects/Room_Assignment$ ./a.out 6
Errore di segmentazione (core dump creato)

Qualche idea su dove possa essere il problema?
Grazie anticipatamente :D

oregon
13-12-2013, 14:23
Nessun errore in quel codice ... lo eseguo normalmente ... il problema dopo ...

damaar
13-12-2013, 14:29
Grazie per la risposta, ma se il problema viene dopo, non dovrebbe eseguire intanto la printf()? come mai va in segmentation fault direttamente?

oregon
13-12-2013, 14:33
Io vedo il risultato della printf a video.

Probabilmente solo un problema di bufferizzazione. Prova a scrivere

fflush(stdout);

dopo la printf

damaar
13-12-2013, 14:44
hai ragione, sono stato stupido a non pensarci! grazie mille :D

Loading