|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2001
Messaggi: 90
|
Errore in Esecuzione programma C++: URGENTISSIMO!!!!!!
Salve a tutti ho un grande problema.........ho sviluppato un programma in C++....
Il programma gira fa le sue iterazioni ma ad un certo punto,che sia a 148 iterazioni ,1000 o altre si blocca e mi da questo errore: Fault: accesse violation at 0x401 abd: read of address 0x1861000.. Che vuol dire? Capita con diversi input in momenti differenti ma l'errore mi viene segnalato sempre sulla stessa linea di programma.... Perche me lo fa dopo un po e non subito?? Vi preog ho bisogno di un grande aiuto subito... Grazie!!
__________________
Cammax |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Non sono un esperto di C++, per cui magari non saprò cmq aiutarti, ma anche se lo fossi, senza uno straccio di codice... posta un po' le righe incriminate, se c'è un qualche loop, il tipo di input insomma quanta + roba puoi, se non so aiutarti io qualcuno lo saprà fare
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2001
Messaggi: 90
|
Errore C++
Ecco le Righe incriminate.........Posto la funzione:
void Trova_Soluzioni(void) { int a,j; const int N=100000000; for(j=0; j<=trx-1; j++){ if(nodo[j]==*costo_max){--------> qui mi si ferma il programma. Vicinato(j); for(a=0; a<=canali-1; a++){ if(vicinato[channel[a]]=='si'){ ass[nodo[j]]=channel[a]; soluzione[channel[a]]=Funzione_Obiettivo(); } else {soluzione[channel[a]]=N; } } for(a=0; a<=canali-1; a++){ if(vicinato[channel_tabu[a]]=='t'){ if(it_tabu[nodo[j]][channel_tabu[a]]<8){ ass[nodo[j]]=channel_tabu[a]; soluzione_tabu[channel_tabu[a]]=Funzione_Obiettivo(); } else soluzione_tabu[channel_tabu[a]]=N; } else soluzione_tabu[channel_tabu[a]]=N; } break; } } Ordina_nuova_soluzione(); }
__________________
Cammax |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2001
Città: Provincia di Varese
Messaggi: 2018
|
"const int N=100000000"
E' errata come linea di programma. Come fai a dichiarare una int (2 byte ca.= max 65536 unsigned) per un valore di 100 milioni? Non è l'origine del problema ma potrebbe generare soluzioni sbagliate nel resto del programma. trx immagino sia dichiarata altrove come variabile globale. Prova a controllare come sono dichiarate le variabili. Secondo me sfora e scrive dove non deve. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Piuttosto mi sembra che manchi qualche informazione come la dichiarazione delle variabili globali (ma quante ne usi ?!?!? Invece di usare const int N = 100000000...metti al posto di N INT_MAX in tutta la funzione.... |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2001
Città: Provincia di Varese
Messaggi: 2018
|
Altra cosa che mi è venuta in mente: se ci sono dei puntatori, accertati che puntino alla variabile corretta
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Mar 2001
Messaggi: 90
|
C++
Ne uso abbastanza poichè sono variabili che arrivano da altri file che rappresentano le istanza di input.....
Inoltre le dichiaro globali perche devono vivere in tutto il programma. N l'ho dichiarato cosi alto perche mi serviva per assegnare ad una soluzione che non devo prendere in considerazione un valore elevato in modo da non considerarla quando andavo a ordinare le soluzioni da prendere....
__________________
Cammax |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Re: C++
Quote:
nodo, costo_max Queste due variabile come sono dichiarate ? A cosa punta costo_max prima di fare il contronto ? Hai deallocato tutte le varaibili dinamiche che non utilizzi più ? |
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Mar 2001
Messaggi: 90
|
C++
INT_MAX quanto vale?
Nessun valore può andare oltre INT_MAX? Le soluzioni danno valori double....mentre le altre variabili sono int perche individuano nodi,canali.. Ciao
__________________
Cammax |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
INT_MAX è il massimo valore possibile per un intero con segno...
Se usi dei double c'è il massimo anche per quelli... |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Mar 2001
Messaggi: 90
|
C++
Come si chiama il massimo per i double?
Secondo te,visto che ho molte variabili globali è megli oche in ogni funzione continui a richiamarle oppure uso funzioni locali e le richiamo nell'intestazione della funzione ? ciao
__________________
Cammax |
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Mar 2001
Messaggi: 90
|
nodo e costo_max sono due variabili intere...
nodo è un array che mi indica i nodi del problema mentre costo_max è un puntatore che mi serve per individuare il primo elemento dell'array nodo che devo processare.... Riguardo alle variabili dinamiche,devo in ogni funzione allocare dinamicamente i puntatori? E se non lo faccio?
__________________
Cammax |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:01.



















