|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
[C] problema allocazione, strutture, stringhe
Ciao a tutti, non so spiegarvi bene il mio problema ma ho un pezzo di codice cortissimo che mi sta facendo impazzire. Eccolo
Codice:
Bit_node bit_new(char* key)
{
Bit_node new = NULL;
printf("%s\n", key);
new = malloc(sizeof(struct bit_node));
printf("%s\n", key);
Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Hai provato con un debugger a vedere cosa succede in memoria? Ma Bit_node cos'è un puntatore?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Non ho mai usato un debugger. Appunto stavo usando le printf. Si Bit_node è un puntatore a struct bit_node.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Allora ti conviene cominciare ad usarlo, dato che solo con un debugger puoi davvero vedere cosa succede in memoria. Io sto imparando ad usare gdb, ma prima usavo il debugger di XCode.
Anche perchè in quel pezzo di codice che hai postato non c'è nulla di strano |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Appunto cavolo
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Non c'è un altro thread che sta modificando il valore all'indirizzo di key vero?
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Non uso thread. Non che io sappia. Non faccio fork nè nient'altro insomma
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ciao ndakota, se non lo conosci già, se e quando avrai tempo ti consiglio di cominciare a utilizzare questo -> Valgrind
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Sto installando. Spero sia facile da usare perchè sto facendo sto progetto per l'università, non ho molto tempo ancora
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
So solo (attraverso questo forum) che è uno strumento di diagnostica eccezionale. Guardando l'home page, in alto a sinistra c'è un menù. La voce Tool Suite: sono i tool distribuiti con Valgrind. Leggiti qualcosa su questi e vedi di capire quale può fare al caso tuo (a naso, Memcheck?) e comincia ad utilizzarlo. Poi al limite chiedi lumi, sicuramente tra gli utenti del forum c'è chi lo conosce bene e potrà darti le dritte giuste per il tuo debug.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Ok, ho già visto come se ne fa un utilizzo di base. Però mi segnala cose che non mi sembrano errori e non saprei come correggere.. Tra l'altro se compilo ed eseguo con valgrind, mi stampa tutto correttamente. Dannato
|
|
|
|
|
|
#12 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Quote:
Beh, come ho detto non ho conoscenze specifiche in merito, non ti resta che attendere più circostanziati consigli e nel frattempo provare a cavartela da te. Ok, oggi mi sento un po' Captain Obvious™
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
||
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Io farei in questo modo
1) compila in questo modo Codice:
gcc -g sorgente.c Codice:
gdb -q ./a.out Codice:
list 1 Facendo così puoi vedere prima e dopo la malloc cosa succede Codice:
break # 5) dai il comando Codice:
run Codice:
x/s key Codice:
x/#x key 7)dai il comando Codice:
continue spero di non aver sbagliato qualcosa dato che come ho già detto prima sto imparando ora ad usare gdb :-D |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Scusa clockover ma come ho detto non ho molto tempo. Cercherò di far qualcosa con le segnalazioni di valgrind altrimenti mi arrendo
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Ho risolto
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Del caso specifico dell'open post non ne ho idea. Perchè la prima volta che l'ho lanciato mi ha dato tanti di quelli errori che ho pensato fosse meglio fare un passo indietro. Così mi sono messo a testare tutte le funzioni fatte da me ed erano piene di errori di memoria di vario tipo. Per esempio per molto non facevo una free, adesso per ogni allocazione ho una free. Altro errore per esempio, allocavo n byte ma in alcuni casi particolari ne scrivevo n-1 e lui lo segnalava. Adesso è tutto perfetto. Non mi segnala niente di niente
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6254
|
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Valgrind colpisce ancora
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Cavolo ragazzi. Sono riuscito ad andare avanti ma più vado avanti più spuntano errori su valgrind. A volte non intaccano l'esecuzione, fila tutto perfettamente. Altre no e quindi poi mi trovo tra millemila errori. Qualcuno ha qualche suggerimento? Qualcuno che lo usa magari e sa dirmi gli errori più comuni e come si risolvono. Please
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:26.




















