|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
|
[C++] Sto impazzendo, mi crasha su un "for (..)"
Sto diventando pazzo, non riesco a capire perchè ma un programma c++ mi crasha quando esegue un'istruzione for. in pratica
Codice:
cout << endl << "uno";
if (capacity > limit ) {
cout << "due";
for (q = 1; q < iterazioni; q++) {
cout << "tre";
Quote:
Sto decisamente impazzendo, l'unica possibilità credo che sia un problema di gestione della memoria.. Qualcuno ha idee su come venirne fuori? Uso Eclipse+CDT+MinGW |
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
il problema secondo me risale alla dichiarazione e utilizzo delle variabili "q" e "iterazioni", come sintassi è corretta.......... ma quelle due variabili cosa sono???
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
non vedendo nessun'altra parte del codice sorgente, mi sorge però spontanea una domanda in base alla mia (fallace) logica:
se hai: capacity > limit il programma non dovrebbe fermarsi? Facendo un discorso meramente intuitivo, leggendo il nome delle variabili, è come se leggessi: se la capacità è maggiore del limite vai avanti. Scusa se sparo, ma credo manchino i pezzi essenziali del tuo codice.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
posta il sorgente intero o almeno il codice di tutta la funzione, è un problema sicuramente banale.
PS: ma fare il debug no eh? |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: May 2005
Città: Genova
Messaggi: 33
|
secondo me il problema potrebbe essere banalmente nell'assegnameto di "iterazioni", controlla
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
|
La situazione è molto più complicata del previsto.
Alcune premesse.. in compilazione non ci sono problemi.. quindi in termini di sintassi il codice è corretto. in pratica ero convinto che quel cout << "tre" non venisse eseguito (almeno credo.. visto che a video non appariva nulla) successivamente però all'interno di quel for ci sono delle istruzioni nelle quali si butta un un ofstream alcuni valori... e parte di quelle istruzioni viene eseguita Cerco di farmi capire Codice:
cout << endl << "uno";
if (capacity > limit ) {
cout << "due";
for (q = 1; q < iterazioni; q++) {
cout << "tre";
// altra roba....
oggettoofstream << "pippo";
Mi sembra una cosa totalmente assurda.. Purtroppo non posso postare il codice completo visto che una roba sviluppata all'univ, non scritta da me e quindi nn vi posso dare il tutto (anche perchè sono svariate migliaia di righe di codice e dubito che abbiate la pazienza di leggervele Cmq altra cosa... in pratica prima il codice era fatto così c'erano varie classi ognuna definite in un .h pippo.h pluto.h gigio.h topo.h e infine c'era: pollo.cpp che conteneva un main... che caricava da un file i dati da esaminare.. Ora visto che la mia parte di lavoro sulla tesi consiste nell'estendere il lavoro fatto precedentemente ho trasformato pollo in modo da farlo diventare una classe che al posto di leggere i dati da file li ottiene andando a impostare i suoi attributi da un altro file con un main.. ho cambiato pollo.cpp in pollo.h ora quindi c'è: pippo.h pluto.h gigio.h topo.h pollo.h e main.cpp In sostanza.. l'errore mi salta fuori nella fase di elaborazione dei dati.. il fatto è che nella versione con pollo.cpp NON mi dà questo errore. In quella invece dove l'ho reso una classe mi dà l'errore anche se il codice per quella sezione è IDENTICO.. Sinceramente la cosa più probabile è un problema di gestione della memoria, allocazione ecc. ecc. perchè tra le varie classi ce ne sono alcune che usano grosse matrice e roba del genere.. Son disperato.. nn so quando riuscirò a finire sta cavolo di tesi, se mai la finirò.. |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: May 2003
Messaggi: 119
|
Se non stampa "tre" molto probabilmente e' perché lo tiene nel buffer e non arriva a svuotarlo a video prima di crushare, prova a scrivere così
cout << "tre"<<endl; visto che l'istruzione oggettoofstream << "pippo"; la esegue, l'errore deve essere dopo, quindi metti una stampa a ogni riga di codice dopo per individuarlo. Buona fortuna |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Trento
Messaggi: 7095
|
prova a fare un flush dello standard output.
ciao ciao
__________________
MyPC: A7A266 - Thoro1800+@2000+ - SK6 - 512DDR - FX5200 128MB - SBLive!1024 - MAXTOR120GB - Liteon LTR52327S LDW-451S HTPC: Case uATX QTec - GA 7VM400M - Duron1600 - ALX800 - 256DDR - Radeon7000 - LiteOn166 - Pow by GeexBox 0.98.5 Utenti con cui ho trattato |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:34.



















