Problema programmazione C

HopelessDaniel

Utente Attivo
331
35
Ciao a tutti, ho un problema con un programma scritto in C, se lo compilo in windows con devC o su ubuntu con il gcc, non da problemi e si esegue senza restituire errore...
Mentre se lo utilizzo su fedora a scuola lo compila, ma al momento di eseguirlo, ad un certo punto va in segmentation fault, ho eseguito il debug e più o meno ho capito dove si trova l'errore ma non riesco a capire come risolvero... la parte di codice è questa:

https://drive.google.com/file/d/0B2yUvij86Ya9Rl9MR0dkNzdnUjA/edit?usp=sharing

Grazie mille
 
Ultima modifica:

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Hai un undefined behavior da qualche parte. Posta il codice in modo appropriato, grazie.
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
Ho modificato con il file con il codice completo...
GDB (che dovresti imparare ad usare) mi indica che il raise del segnale avviene in "prodotto_matriciale" a causa di "j=my->c; *contmoltip=*contmoltip+1;" (linea 124)
Codice:
0x0000000000400d8e in prodotto_matriciale (mx=0x6032f0, my=0x400603310, 
    contmoltip=0x7fffffffe534) at Progetto.c:124
124             j=my->c;                *contmoltip=*contmoltip+1;
Voglio farti notare anche i vari warning di GCC:
Codice:
Progetto.c: In function ‘MCM’:
Progetto.c:83:25: warning: value computed is not used [-Wunused-value]
  else printf("%c",A[i]);*contmcm++;
                         ^
Progetto.c: In function ‘new_matrice’:
Progetto.c:90:10: warning: unused variable ‘j’ [-Wunused-variable]
   int i, j;
          ^
Progetto.c: In function ‘matrice_prodottop’:
Progetto.c:150:25: warning: value computed is not used [-Wunused-value]
  if(i==j){ return A[i]; *contmoltip++;}
                         ^
Progetto.c: At top level:
Progetto.c:181:1: warning: return type defaults to ‘int’ [-Wreturn-type]
 main(){
 ^
Progetto.c: In function ‘main’:
Progetto.c:186:42: warning: unused variable ‘mat’ [-Wunused-variable]
 int **mat1,**mat2,**mat3,**mat4,**mat5,**mat;
                                          ^
Progetto.c:322:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
[B]Progetto.c: In function ‘stampa_matricep’:
Progetto.c:164:14: warning: ‘i’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   if(m!=NULL && i!=0 && j!=0){
              ^
Progetto.c:164:22: warning: ‘j’ may be used uninitialized in this function [-Wmaybe-uninitialized]
   if(m!=NULL && i!=0 && j!=0){[/B]
                      ^
 

HopelessDaniel

Utente Attivo
331
35
GDB (che dovresti imparare ad usare) mi indica che il raise del segnale avviene in "prodotto_matriciale" a causa di "j=my->c; *contmoltip=*contmoltip+1;" (linea 124)
Codice:
0x0000000000400d8e in prodotto_matriciale (mx=0x6032f0, my=0x400603310, 
    contmoltip=0x7fffffffe534) at Progetto.c:124
124             j=my->c;                *contmoltip=*contmoltip+1;

ho utilizzato anche io GDB è avevo notato dove era l'errore (l'avevo scritto nella parte di codice prima di mettere il link, sulla stessa riga da te segnalata)....ma non riesco a capire perchè restituisca errore, la magior parte del tempo utilizzo devC o ubuntu e non dandomi l'errore non riesco a capire come risolverlo...
 

signore del tempo

Utente Èlite
3,228
491
CPU
Intel Core i5 4670K
Scheda Madre
Asus Z87-Plus
HDD
WD Caviar Green 500GB
RAM
G.Skill Ares 2x4GB 1600MHz
GPU
Sapphire 7850 1GB @ 1050MHz
Audio
Integrata
Monitor
Acer V193w
PSU
XFX ProSeries 550W Core Edition
Case
CM HAF 912 plus
OS
ArchLinux + KDE - Windows 10
ho utilizzato anche io GDB è avevo notato dove era l'errore (l'avevo scritto nella parte di codice prima di mettere il link, sulla stessa riga da te segnalata)....ma non riesco a capire perchè restituisca errore, la magior parte del tempo utilizzo devC o ubuntu e non dandomi l'errore non riesco a capire come risolverlo...
Perché quelli non sono errori, bensì warning, che potrebbero causare errori. Puoi compilare con:
Codice:
gcc -Werror -Wall -Wextra
per trattare tali set di warning come errori.
Warning Options - Using the GNU Compiler Collection (GCC)
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili