PDA

Visualizza la versione completa : [C++] esecuzione e debug


giulio.dr
04-02-2009, 15:36
Salve a tutti ho un piccolo problema: il debug (eseguito anche senza breakpoint) mi da un risultato mentre quando provo a compilarlo ed eseguirlo me ne da un altro!
:confused: :confused: :confused:

Vi posto i file in questione (bisogna aprire un file di testo)

http://rapidshare.com/files/193735844/Progetto_1input.cpp.html]codice ( [url) sorgente[/URL]

file.txt (http://rapidshare.com/files/193736004/SimpleC.txt.html?killcode=311346783912361390)

Il problema dovrebbe essere che la funzione Memoria_Parametri_Chiamate (riga 534) in esecuzione non legge le linee 21 e 32 del file, mentre facendo il debug funziona come dovrebbe...

giulio.dr
05-02-2009, 09:27
Sapreste dirmi almeno quando IN GENERALE in un programma il debug senza breakpoints è diverso dall'esecuzione? :confused:

Stoicenko
05-02-2009, 09:40
se in debug viene compilato con librerie di debug (che di solito hanno lo stesso nome di quelle in release ma con una D in più) potrebbe dipendere da quello

oregon
05-02-2009, 10:09
I link che hai indicato NON sono validi ... come risponderti?

giulio.dr
05-02-2009, 10:29
Originariamente inviato da oregon
I link che hai indicato NON sono validi ... come risponderti?

Provo a ripostarli:

file.txt (http://rapidshare.com/files/194156572/SimpleC.txt.html)

codice sorgente (http://rapidshare.com/files/194157026/Progetto_2.cpp.html)


Non credo sia in problema di librerie (non sapevo nemmeno che esistessero le librerie di debug...) le ho controllate...

oregon
05-02-2009, 11:09
Per vari motivi, non si riesce a scaricare i file (magari prova con un altro sito) ...

In ogni caso, descrivi anche le differenze che riscontri tra una compilazione e l'altra ... un po' di dettagli non guasta ...

giulio.dr
05-02-2009, 11:42
Allora è un mini-compilatore che legge un file scritto in uno pseudo sottolinguaggio del C (inventato) e di ogni riga determina la dimensione della dichiarazione di variabile o di una chiamata di rocedura.
Ora se in una procedura ne chiamo un'altra definita prima, dovrebbe calcolare la memoria della funzione chiamata (calcolata al tempo della compilazione) e sommarla alla memoria della funzione chiamante.

Ora il debugging va bene, infatti nell'esempio la memoria totale è 35 perchè riesce a leggere le chiamate di funzione, in esecuzione invece le ignora e la memoria è minore in tutte le procedure.



codice sorgente (http://www.4shared.com/file/84543162/783e89d3/Progetto_2.html )

Codice (http://www.4shared.com/file/84543846/42b414c7/SimpleC.html)

oregon
05-02-2009, 11:56
Ho visto il codice e ho notato che scrivi

Tabella TABELLA[numero_righe];

allocando la tabella in modo dinamico.

Questo tipo di scrittura e' valido solamente per i compilatori che supportano lo standard C99 (cosa che, personalmenta, non mi piace).

Mi dispiace ma non potendo compilarlo, non posso darti una risposta ...

giulio.dr
05-02-2009, 12:10
Perchè è un tipo di scrittura poco corretta? Quale altro modo ci sarebbe per creare un vettore dinamicamente?

oregon
05-02-2009, 12:18
Originariamente inviato da giulio.dr
Perchè è un tipo di scrittura poco corretta?

NON ho detto che e' poco corretta ... ho detto che e' secondo lo standard C99 che, personalmente, non condivido.


Quale altro modo ci sarebbe per creare un vettore dinamicamente?

Come "quale altro modo"?

Con la new in C++, malloc in C ... mi sembra ovvio ...

Loading