PDA

View Full Version : [ANSI C] Segmentation fault


Gio Games
16-05-2008, 12:31
Salve a tutti: ho un problema che non riesco a comprendere.

Ho creato un programma per ordinare una semplice tabella su file. A questo proposito ho creato una funzione per creare l'array dinamicamente e fino a 5 minuti fa non avevo problemi.
Ora non so come (non riesco a capire che cosa ho modificato per trovarmi questo errore dato che ho solo aggiunto commenti) appena lancio il programma mi trovo un bel

Segmentation fault (core dumped)


Il bello è che se inserisco una printf all'inizio del programma con scritto 2 o più caratteri il problema non mi si presenta, mentre se ne faccio una con un solo carattere non solo il problema si presenta, ma non mi stampa nemmeno il carattere che avrebbe dovuto stampare la printf.

Non riesco a capire da che cosa possa essere dovuto.

Ringrazio anticipatamente tutti per le risposte.

Gio Games
16-05-2008, 13:34
Hai ragione, nella fretta (dovevo andare a mangiare :D) mi son dimenticato.
E sì, son sotto linux.

Non posto tutto sennò verrebbe troppo lungo.


qui c'è la dichiarazione delle variabili
int numero_righe;
tipo_personalizzato *studente;

qui la parte di codice incriminata:

numero_righe = crea_array(&studente);



all'interno della crea_array leggo da file e credo dinamicamente l'array in base alla dimensione dei record presenti.

Il bello è che se faccio una printf con scritto qualcosa funziona ma se scrivo
printf("Qualcosa\n");

mi ridà segmentation fault

Comunque adesso vado di gdb :D

Qualsiasi suggerimento è ben accetto

maulattu
16-05-2008, 13:38
Hai ragione, nella fretta (dovevo andare a mangiare :D) mi son dimenticato.
E sì, son sotto linux.

Non posto tutto sennò verrebbe troppo lungo.


qui c'è la dichiarazione delle variabili
int numero_righe;
tipo_personalizzato *studente;

qui la parte di codice incriminata:

numero_righe = crea_array(&studente);



all'interno della crea_array leggo da file e credo dinamicamente l'array in base alla dimensione dei record presenti.

Il bello è che se faccio una printf con scritto qualcosa funziona ma se scrivo
printf("Qualcosa\n");

mi ridà segmentation fault

Comunque adesso vado di gdb :D

Qualsiasi suggerimento è ben accetto

sai che alla funzione crea_array stai passando un puntatore a puntatore, vero?
dentro tale funzione dovresti fare

*studente = calloc(xxx,yyy);

Gio Games
16-05-2008, 13:40
sai che alla funzione crea_array stai passando un puntatore a puntatore, vero?
dentro tale funzione dovresti fare

*studente = calloc(xxx,yyy);


Sìsì. Per quello non ho sbagliato.

Grazie comunque per l'attenzione, se hai altri suggerimenti non esitare :D

Gio Games
16-05-2008, 14:15
Ok ragazzi, risolto.
Avevo toppato in una condizione in un for :D

Non so come avevo cambiato la condizione e questo mi mandava in un NULL.

Grazie a tutti per i suggerimenti