Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
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: 6424
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


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Il nuovo Snapdragon 8 Elite Gen 6 sar&ag...
Nintendo Switch 2: risultati sotto le at...
Weekend con tante sorprese su Amazon: to...
HONOR non si ferma più: il 2025 &...
Speciale best seller: EUREKA J15 Evo Ult...
Roborock Q10 X5+ da 10.000 Pa a 199€ &eg...
E-mail reset password di Instagram: la c...
La NASA ha discusso le problematiche del...
Il razzo spaziale NASA SLS e la capsula ...
Stazione Spaziale Internazionale: Crew-1...
Samsung Galaxy S26 Ultra: la ricarica de...
Apple ha un nuovo partner per la sua App...
Trenitalia introduce il prezzo dinamico ...
OnePlus non si ferma più: c'&egra...
DAZN sconta il piano Full per 6 mesi, se...
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: 01:20.


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