Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-09-2011, 10:38   #1
ndakota
Senior Member
 
L'Avatar di ndakota
 
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);
La funzione va avanti ma non importa. Il fatto è che alla prima stampa di key me la stampa giusta, la seconda, dopo che a new viene istanziato il puntatore a quella struttura allocata, key mi viene stampata con un carattere strano in coda! Non capisco proprio. Qualcuno riesce ad aiutarmi?

Grazie.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 11:08   #2
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Hai provato con un debugger a vedere cosa succede in memoria? Ma Bit_node cos'è un puntatore?
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 11:16   #3
ndakota
Senior Member
 
L'Avatar di ndakota
 
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.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 11:22   #4
clockover
Senior Member
 
L'Avatar di clockover
 
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
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 11:31   #5
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Appunto cavolo
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 11:32   #6
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Non c'è un altro thread che sta modificando il valore all'indirizzo di key vero?
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 11:43   #7
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Non uso thread. Non che io sappia. Non faccio fork nè nient'altro insomma
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 11:49   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 11:54   #9
ndakota
Senior Member
 
L'Avatar di ndakota
 
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
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 11:59   #10
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da ndakota Guarda i messaggi
Sto installando. Spero sia facile da usare perchè sto facendo sto progetto per l'università, non ho molto tempo ancora
Io non l'ho mai usato, eh
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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 12:07   #11
ndakota
Senior Member
 
L'Avatar di ndakota
 
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
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 12:18   #12
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da ndakota Guarda i messaggi
Però mi segnala cose che non mi sembrano errori e non saprei come correggere..
Se non sono errori probabilmente sono dei warning?

Quote:
Originariamente inviato da ndakota Guarda i messaggi
Tra l'altro se compilo ed eseguo con valgrind, mi stampa tutto correttamente. Dannato
Questo è interessante
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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 12:20   #13
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Io farei in questo modo
1) compila in questo modo
Codice:
gcc -g sorgente.c
2) esegui il debugger
Codice:
gdb -q ./a.out
3) lista il sorgente in gdb con questo comando e premi invio fino alle linee che ti interessando
Codice:
list 1
4) leggi il numero di riga in cui si trovano le due printf e settali come breakpoint in questo modo (un comando per ogni riga)
Facendo così puoi vedere prima e dopo la malloc cosa succede
Codice:
break #
# ovviamente è un numero
5) dai il comando
Codice:
run
6)il programma viene eseguito e si blocca al primo breakpoint quindi dai il comando
Codice:
x/s key
ti stampa il contenuto in formato stringa di key. Dando
Codice:
x/#x key
ti stampa il contenuto in esadecimale e al posto di # inserisci un numero, ad esempio 1, 2, 3, 4, ecc..., dipende dalla dimensione di key
7)dai il comando
Codice:
continue
8)ora si è fermato al secondo breakpoint e ripeti i comandi del punto 6. In questo modo puoi confrontare i valori in memoria e vedere se qualcosa è differente

spero di non aver sbagliato qualcosa dato che come ho già detto prima sto imparando ora ad usare gdb :-D
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 12:31   #14
ndakota
Senior Member
 
L'Avatar di ndakota
 
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
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 12:58   #15
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Ho risolto Grandissimi! E questo valgrind è veramente una figata
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 13:18   #16
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da ndakota Guarda i messaggi
Ho risolto Grandissimi! E questo valgrind è veramente una figata
Si può sapere qual'era il problema? Scusa se chiedo, ma la curiosità è bruciante
__________________

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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 14:22   #17
ndakota
Senior Member
 
L'Avatar di ndakota
 
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
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 16:08   #18
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6254
Quote:
Originariamente inviato da ndakota Guarda i messaggi
Ho risolto Grandissimi! E questo valgrind è veramente una figata
Altroché se è una figata

Ti consiglio di utilizzare SEMPRE questi flags quando lo lanci:

--tool=memcheck --leak-check=full

Ed ovviamente compilare con -O0 -g

Ciao.
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 16:09   #19
banryu79
Senior Member
 
L'Avatar di banryu79
 
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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2011, 21:47   #20
ndakota
Senior Member
 
L'Avatar di ndakota
 
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
ndakota è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
HBM5, DDR6 e NAND da 400 layer: il futur...
'Aggiorna e arresta' non spegne ma riavv...
Ayaneo oltre le handheld: in arrivo uno ...
Progetto STELLAR: l'Europa punta sulle b...
L'auto cattura le sue stesse emissioni: ...
Hisense 55'' 4K Ultra HD 2025 in offerta...
Black Friday Xiaomi 2025: 5 offerte da n...
Apple si affida a Google? Gemini alla ba...
Gravidanze più facili? STAR, il s...
Startup cinesi di veicoli elettrici, ad ...
Volkswagen nella bufera...per il caff&eg...
Esaurito quello con Ryzen, ecco un altro...
Steam: gli utenti Linux sfondano la barr...
BYD nel terzo trimestre: utile netto sop...
Windows 11 verso un supporto Bluetooth p...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v