Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-01-2008, 19:21   #1
caustico
Senior Member
 
L'Avatar di caustico
 
Iscritto dal: May 2006
Città: alessandria
Messaggi: 1693
[C] mai vista una cosa del genere

ciao a tutti, vi espongo brevemente qual'è il problema. . .sto facendo un programmino leggermente complesso (quantomeno piu del solito helloworld.c) ma mi capita una cosa incredibile. . .quando compilo ed eseguo il codice in universita' il programma gira perfettamente, quando invece compilo ed eseguo il medesimo codice a casa (sia sulla virtual machine che su una macchina dedicata) questo mi da una segmentation fault che a detta di gdb viene generata nel momento in cui faccio una fopen su un file. . .voi mi direte "be lo hai programmato male" e vi darei ragione visto che non sono proprio un fenomeno, ma com'è possibile che in uni funziona e a casa addirittura va in segmentation fault?. . .compilato con -Wall -pedantic non mi restituisce neanche un warning. . .ora se il programma non dovessi inviarlo al mio professore non ci sarebbero problemi, lo faccio andare in uni e chi si è visto si è visto. . .ma visto che il prof nelle migliori delle ipotesi lo compilera' sul suo portatile. . .puo' dipendere dalla versione di gcc? in uni usiamo fedora5 mi pare mentre a casa ho una suse virtuale e una mepis sul portatile. . .
__________________
Ho concluso affari positivamente con: Kawa, maxb81, pinok, DeicidE, borty, sprec13, Shandar, vtecb4st4rd, WhiteWolf42, feba, Bobosassa, devon_rex, cristianobon70, pingu79, Rospaccio, ces53, messmaker, iridio80, ilayu81, marcasso, imu, gianni165, Nike86, mojito
caustico è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 19:28   #2
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
bla bla bla... sarebbe bastato incollare il sorgente correttamente formattato tra i tag CODE
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 20:01   #3
caustico
Senior Member
 
L'Avatar di caustico
 
Iscritto dal: May 2006
Città: alessandria
Messaggi: 1693
Quote:
Originariamente inviato da 71104 Guarda i messaggi
bla bla bla... sarebbe bastato incollare il sorgente correttamente formattato tra i tag CODE
ma sono 420 righe di codice. . .
__________________
Ho concluso affari positivamente con: Kawa, maxb81, pinok, DeicidE, borty, sprec13, Shandar, vtecb4st4rd, WhiteWolf42, feba, Bobosassa, devon_rex, cristianobon70, pingu79, Rospaccio, ces53, messmaker, iridio80, ilayu81, marcasso, imu, gianni165, Nike86, mojito
caustico è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 20:04   #4
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
beh incolla solo la parte che secondo te dovrebbe contenere l'errore...
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 20:06   #5
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Beh, fatto sta che senza codice noi non possiamo farci niente

"Ti chiedi il come mai, ti chiedi il quasi quasi, dov'è la risposta? La risposta non la devi cercare fuori. La risposta è dentro di te ... epperò è sbagliata!"
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 20:18   #6
caustico
Senior Member
 
L'Avatar di caustico
 
Iscritto dal: May 2006
Città: alessandria
Messaggi: 1693
grazie a tutti ho risolto
__________________
Ho concluso affari positivamente con: Kawa, maxb81, pinok, DeicidE, borty, sprec13, Shandar, vtecb4st4rd, WhiteWolf42, feba, Bobosassa, devon_rex, cristianobon70, pingu79, Rospaccio, ces53, messmaker, iridio80, ilayu81, marcasso, imu, gianni165, Nike86, mojito

Ultima modifica di caustico : 31-01-2008 alle 18:39.
caustico è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 20:22   #7
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Mi sembra il classico caso di memoria inizializzata (generalmente tutta azzerata) in una piattaforma e NON inizializzata (quindi con valori casuali) nell'altro.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 20:24   #8
caustico
Senior Member
 
L'Avatar di caustico
 
Iscritto dal: May 2006
Città: alessandria
Messaggi: 1693
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Mi sembra il classico caso di memoria inizializzata (generalmente tutta azzerata) in una piattaforma e NON inizializzata (quindi con valori casuali) nell'altro.
e come potrei risolvere? cioè non alloco una struttura, non ancora perlomeno per cui cosa dovrei andare a inizializzare?
__________________
Ho concluso affari positivamente con: Kawa, maxb81, pinok, DeicidE, borty, sprec13, Shandar, vtecb4st4rd, WhiteWolf42, feba, Bobosassa, devon_rex, cristianobon70, pingu79, Rospaccio, ces53, messmaker, iridio80, ilayu81, marcasso, imu, gianni165, Nike86, mojito
caustico è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 20:45   #9
caustico
Senior Member
 
L'Avatar di caustico
 
Iscritto dal: May 2006
Città: alessandria
Messaggi: 1693
ho capito il problema. . .inizializzo una char descrizione[10000000] (lo avevo detto che non sono buono a programmare ) cosa che probabilmente non piace ne alla virtual ne al mio portatile. . .ma a questo punto vi faccio una domanda, come faccio ad allocare dinamicamente una stringa di caratteri? cioè come faccio a caricare un carattere alla volta senza sapere quanti caratteri devo caricare in una stringa?
__________________
Ho concluso affari positivamente con: Kawa, maxb81, pinok, DeicidE, borty, sprec13, Shandar, vtecb4st4rd, WhiteWolf42, feba, Bobosassa, devon_rex, cristianobon70, pingu79, Rospaccio, ces53, messmaker, iridio80, ilayu81, marcasso, imu, gianni165, Nike86, mojito
caustico è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 20:59   #10
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Devi usare malloc e realloc, ma forse puoi tenere il codice che hai e usare una memset per inizializzare il tutto (non ho letto il codice ma mi sembra di aver capito che sia questo il problema) -> LINK
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 21:09   #11
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da caustico Guarda i messaggi
ho capito il problema. . .inizializzo una char descrizione[10000000] (lo avevo detto che non sono buono a programmare ) cosa che probabilmente non piace ne alla virtual ne al mio portatile. . .ma a questo punto vi faccio una domanda, come faccio ad allocare dinamicamente una stringa di caratteri? cioè come faccio a caricare un carattere alla volta senza sapere quanti caratteri devo caricare in una stringa?
Ciao, scusa l'intromissione.
In pausa pranzo stavo controllando il tuo codice, ed avrei un paio di suggerimenti da dare:

Codice:
void aggiungi_feed(){
	char ind[100], tmp[10], str[100], cmd[]="wget -O tmp ";
	printf("\nInserisci l'indirizzo URL del feed da aggiungere ai preferiti\n");
	scanf("%s", ind);
	strcpy(str,ind);
	strcat(cmd,str);
	system(cmd);
Vai a fare la strcat a cmd. Non avrai spazio a sufficienza in questa stringa, molto probabilmente avrai un errore random (nel senso che ogni tanto funziona ed ogni tanto vai in crash).

Sempre nella stessa funzione:
Codice:
fp = fopen("tmp", "r");
fgets(tmp, 6, fp);
if(strcmp(tmp,"<?xml")==0){
	fp=fopen("rss","a");
	fprintf(fp,"\n");
	fprintf(fp,ind);
	fclose(fp);
	printf("\nFeed aggiunto ai preferiti\n");
	}
	else{
		system("clear");
		printf("\n\n\tL'indirizzo URL inserito non si riferisce a un feed, digita nuovamente 3 per riprovare\n");
		}
Controlla sempre che il file sia stato aperto correttamente. Nel caso il file tmp non venga trovato, o sia lockato da qualche altro programma, etc., la successiva fgets() andra' in crash. Lo stesso quando apri rss, subito dopo.

Supponi ora che le aperture dei file vadano bene. Siccome usi la variabile fp per entrambi i file, quando eseguirai la seconda fopen() ti perderai il file precedente, senza aver nemmeno la possibilita' di chiuderlo.
Pertanto, siccome il numero di file che puoi aprire e' limitato, ad un certo punto il tuo programma non potra' piu' aprire file, e siccome non hai fatto il controllo sull'esito dell'apertura, andra' in crash.
Attenzione che questo tipo di crash e' di quelli che definisci "stranissimi": sono effettivamente difficili da trovare semplicemente analizzando l'output (del tipo "perche' funzionava correttamente fino a 10 min. fa ed ora va in crash?")

Codice:
void memorizza(char *in){

	char tmp[5], titolo[500], descrizione[10000000], link[500], data[55], enclosure[500],type[500];
	char fine;
Beh, questa l'hai trovata tu:in generale non e' bello creare una variabile locale da 10 milioni di caratteri. Potresti avere qualche problema.
Per risolverlo, prima di tutto valuta se e' davvero necessario avere una variabile cosi' grande (sai, l'hai chiamata descrizione....).
In secondo luogo, puoi valutare se allocare dinamicamente o metterla globale/statica.
Anche in questa funzione apri un file senza controllare, ma ne abbiamo gia' parlato.

ATTENZIONE - attento al "gioco" che fai chiamando leggi_file() che richiama apri_file() che a sua volta richiama leggi_file(). Non e' sano. Controlla se puoi risolvere in altro modo (sicuramente lo puoi fare).
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 29-01-2008, 23:05   #12
caustico
Senior Member
 
L'Avatar di caustico
 
Iscritto dal: May 2006
Città: alessandria
Messaggi: 1693
innanzi tutto grazie sottovento passo subito a qualche delucidazione,allora: non faccio ulteriori controlli che il file sia stato aperto correttamente o meno all'interno della apri_file perchè questi vengono fatti dalla void controlla_input che passa alla apri_file solo nel caso in cui l'apertura avviene con successo; per quanto riguarda il gioco che faccio chiamando leggi_file() che richiama apri_file() che a sua volta richiama leggi_file() pur convenendo con te che non sia il massimo è l'unica soluzione pseudoplausibile che mi è venuta in mente per permettere al programma di non uscire dall'esecuzione qualora non venga passato un argomento durante l'esecuzione o nel caso in cui il file specificato non esista. . .per quanto riguarda il resto hai ragionissima su tutta la linea, la var descrizione contiene quello che c'è all'interno dei campi <description></description> di un rss, di conseguenza non ha una lunghezza fissa, e pur essendo discretamente grande non è infinito. . .quindi di sicuro se lo sapessi fare char descrizione sarebbe una var dinamica. . .
__________________
Ho concluso affari positivamente con: Kawa, maxb81, pinok, DeicidE, borty, sprec13, Shandar, vtecb4st4rd, WhiteWolf42, feba, Bobosassa, devon_rex, cristianobon70, pingu79, Rospaccio, ces53, messmaker, iridio80, ilayu81, marcasso, imu, gianni165, Nike86, mojito
caustico è offline   Rispondi citando il messaggio o parte di esso
Old 30-01-2008, 01:36   #13
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da caustico Guarda i messaggi
innanzi tutto grazie sottovento passo subito a qualche delucidazione,allora: non faccio ulteriori controlli che il file sia stato aperto correttamente o meno all'interno della apri_file perchè questi vengono fatti dalla void controlla_input che passa alla apri_file solo nel caso in cui l'apertura avviene con successo; per quanto riguarda il gioco che faccio chiamando leggi_file() che richiama apri_file() che a sua volta richiama leggi_file() pur convenendo con te che non sia il massimo è l'unica soluzione pseudoplausibile che mi è venuta in mente per permettere al programma di non uscire dall'esecuzione qualora non venga passato un argomento durante l'esecuzione o nel caso in cui il file specificato non esista. . .per quanto riguarda il resto hai ragionissima su tutta la linea, la var descrizione contiene quello che c'è all'interno dei campi <description></description> di un rss, di conseguenza non ha una lunghezza fissa, e pur essendo discretamente grande non è infinito. . .quindi di sicuro se lo sapessi fare char descrizione sarebbe una var dinamica. . .
Ciao,
per quanto riguarda leggi_file() e apri_file() direi che cambiare non e' difficilissimo. Tutto sommato, visto che apri_file() e' chiamata in due punti soltanto (uno di questi e' appunto leggi_file()) potresti semplicemente scrivere:

Codice:
void apri_file(char *i)
{
	char s[20]="wget -O file ";
	char op[500], str[500];
	fp=fopen(i,"r");
	while (fp == NULL)
	{
		printf("Il File non esiste!!!\n");
		leggi_file(i);
		fp=fopen(i,"r");
	}
Ovviamente in leggi_file() toglierai la chiamata ad apri_file().
Non spaventarti se leggi_file contiene solo un paio di righe di codice: e' segno che stai andando nella direzione giusta.
Inoltre otterrai anche il vantaggio che le funzioni, cambiate in questo modo, fanno esattamente quello che il loro nome suggerisce, e non qualcosa di piu'.
Per questo stesso motivo, mi permetterei di suggerirti di togliere la chiamata ad apri_file da controlla_input().
Fai fare a controlla_input() solo il controllo e fagli ritornare un risultato. Usa poi questo esito per chiamare o meno la apri_file().

Altro suggerimento: spesso trovare gli errori run time e' piuttosto difficile. Invece che fare una printf ("Il file non esiste\n") (che potrebbe non esser vero, magari il problema e' un altro), scrivi
Codice:
perror ("non posso aprire il file");
La perror() fara' seguire alla tua scritta il motivo della mancata apertura: magari non hai i permessi, o il file e' lockato,...

Per quanto riguarda la tua descrizione, puoi fare come ti e' stato suggerito prima: dichiarare quel campo come puntatore a char (del tipo char *descrizione) e scrivere:
Codice:
void memorizza(char *in)
{
  char tmp[5], titolo[500], *descrizione, link[500], data[55], enclosure[500],type[500];

  descrizione = (char *)malloc (10000000);
  if (descrizione == NULL)
  {
    printf ("Impossibile allocare memoria per la descrizione!!\n"); // Non usare perror qui!
    // Esegui ora qualche altra operazione. Non puoi seguire il normale flusso di esecuzione.
  }

   ...
    qui usi la memoria
   ...

  free (descrizione);  // Restituisci la memoria al sistema
Ricorda di fare la free() in qualunque caso: se decidi di uscire prima da questa funzione e descrizione e' allocata, deallocala.
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 30-01-2008, 12:02   #14
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6403
Quote:
Originariamente inviato da caustico Guarda i messaggi
ciao a tutti, vi espongo brevemente qual'è il problema. . .sto facendo un programmino leggermente complesso (quantomeno piu del solito helloworld.c) ma mi capita una cosa incredibile. . .quando compilo ed eseguo il codice in universita' il programma gira perfettamente, quando invece compilo ed eseguo il medesimo codice a casa (sia sulla virtual machine che su una macchina dedicata) questo mi da una segmentation fault che a detta di gdb viene generata nel momento in cui faccio una fopen su un file. . .voi mi direte "be lo hai programmato male" e vi darei ragione visto che non sono proprio un fenomeno, ma com'è possibile che in uni funziona e a casa addirittura va in segmentation fault?. . .compilato con -Wall -pedantic non mi restituisce neanche un warning. . .ora se il programma non dovessi inviarlo al mio professore non ci sarebbero problemi, lo faccio andare in uni e chi si è visto si è visto. . .ma visto che il prof nelle migliori delle ipotesi lo compilera' sul suo portatile. . .puo' dipendere dalla versione di gcc? in uni usiamo fedora5 mi pare mentre a casa ho una suse virtuale e una mepis sul portatile. . .
La causa più comune sono variabili non inizializzate. Un compilatore magari le inizializza a caso, l'altro per niente ed ecco che scappa il Segmentation Fault. Infatti,in genere,è buona norma compilare ed eseguire il proprio sorgente con diversi compilatori e verificare che il comportamento sia lo stesso.
Unrue è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Il nuovo OnePlus Nord 6 è vicino al debu...
Tesla svela i risultati del Q4: conferma...
Nuova rimodulazione da Fastweb: fino a 3...
La NVIDIA RTX 5090 potrebbe presto costa...
ASUS non produrrà più smar...
CoopVoce sta per lanciare il 5G: ecco qu...
Factorial, azienda di batterie allo stat...
Le specifiche fuori di testa della Yangw...
I numeri incredibili di Xiaomi: nel 2025...
In Cina è pronto il parco fotovol...
Neuralink accelera: produzione di massa ...
Starlink abbassa l'orbita di migliaia di...
Dal MIT una nuova batteria per auto elet...
Adam Mosseri parla di IA su Instagram: l...
Suonerie personalizzate e Tone Store: il...
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: 23:04.


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