Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-05-2009, 19:03   #1
Tel Mark
Member
 
L'Avatar di Tel Mark
 
Iscritto dal: Nov 2007
Città: Milano
Messaggi: 145
[c] bus error inaspettato

questo è un pezzo di codice:

lab = (int **)malloc(sizeof(int *) * righe);
for (i = 0; i <righe; i++)
lab[i] = (int *)malloc(sizeof(int) * colonne);

for(i=0; i<righe; i++) {
for(j=0; j<colonne; j++) {
scanf("%d", &lab[i][j]);}}

lancio il programma con dei valori da inserire nella mia matrice lab in buffer, non riesco a capire come mai dopo l'ultimo valore inserito, quindi a lab[righe-1][colonne-1] ottengo bus error. Ho fatto diverse prove inserendo varie printf qua e la nel codice, e l'errore sta proprio alla fine della scanf. boh

Ultima modifica di Tel Mark : 22-05-2009 alle 20:46.
Tel Mark è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2009, 19:06   #2
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1059
comunque questo non è c#
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2009, 20:01   #3
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Gia'. E' C.

Come e' dichiarata la matrice lab?
Inoltre dovresti controllare i valori di ritorno della Malloc, che nel caso restituisse NULL significherebbe errore nell'allcazione di memoria.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2009, 20:47   #4
Tel Mark
Member
 
L'Avatar di Tel Mark
 
Iscritto dal: Nov 2007
Città: Milano
Messaggi: 145
corretto l'errore nel titolo chiedo venia

la matricè è int **lab
Tel Mark è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 00:50   #5
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
per sicurezza la scanf scrivila cosi: scanf("%d", &(lab[i][j]))
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 00:53   #6
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4907
Quote:
Originariamente inviato da fero86 Guarda i messaggi
per sicurezza la scanf scrivila cosi: scanf("%d", &(lab[i][j]))
Spero proprio non usi un compilatore che viola la precedenza degli operatori.
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 01:45   #7
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da ||ElChE||88 Guarda i messaggi
Spero proprio non usi un compilatore che viola la precedenza degli operatori.
con gli operatori unari io c'ho sempre il dubbio
per esempio, qual é il risultato ufficialmente definito dallo standard di questa espressione?
Codice:
char n = 1;
return !~n;
e di questa?
Codice:
char n = 1;
return ~!n;
ed inoltre... definito da quale standard? vale lo stesso per tutti, compresi quelli del C++?
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 02:12   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da fero86 Guarda i messaggi
con gli operatori unari io c'ho sempre il dubbio
per esempio, qual é il risultato ufficialmente definito dallo standard di questa espressione?
Codice:
char n = 1;
return !~n;
e di questa?
Codice:
char n = 1;
return ~!n;
ed inoltre... definito da quale standard? vale lo stesso per tutti, compresi quelli del C++?
Sceglierei un altro esempio perchè quelli sono operatori unari e a meno che non ci sia il complemento dell'operatore negazione o la negazione dell'operatore complemento direi che solo la più fantasiosa delle implementazione possa fare qualcosa di diverso dall'evidente.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 03:13   #9
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4907
Quote:
Originariamente inviato da fero86 Guarda i messaggi
con gli operatori unari io c'ho sempre il dubbio
& sta un "piano" sotto a [].
! e ~ invece sono sulo stesso "piano", per il quale vale l'ordine di lettura da destra.
Non so in quale standard siano definite precedenza/ordine, ma se fai una ricerca con google vedrai che i risultati sono sempre quelli (si trovano anche alcuni esempi di ambiguità).
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 05:49   #10
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Tel Mark Guarda i messaggi
questo è un pezzo di codice:

lab = (int **)malloc(sizeof(int *) * righe);
for (i = 0; i <righe; i++)
lab[i] = (int *)malloc(sizeof(int) * colonne);

for(i=0; i<righe; i++) {
for(j=0; j<colonne; j++) {
scanf("%d", &lab[i][j]);}}

lancio il programma con dei valori da inserire nella mia matrice lab in buffer, non riesco a capire come mai dopo l'ultimo valore inserito, quindi a lab[righe-1][colonne-1] ottengo bus error. Ho fatto diverse prove inserendo varie printf qua e la nel codice, e l'errore sta proprio alla fine della scanf. boh
Ciao
1 - come ti ha detto gugoXX, occorre fare il controllo sul risultato della malloc(). In azienda, per esempio, consideriamo il mancato controllo un errore grave (blind faith).

2 - Hai un debugger? Se proprio non riesci a trovare l'errore potresti stampare l'indirizzo &lab[i][j]. Su una singola riga dovrebbe andare di 4 in 4, no?
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 11:36   #11
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Sceglierei un altro esempio perchè quelli sono operatori unari e a meno che non ci sia il complemento dell'operatore negazione o la negazione dell'operatore complemento direi che solo la più fantasiosa delle implementazione possa fare qualcosa di diverso dall'evidente.
e l'evidente in questo caso sarebbe?


Quote:
Originariamente inviato da ||ElChE||88 Guarda i messaggi
& sta un "piano" sotto a [].
! e ~ invece sono sulo stesso "piano", per il quale vale l'ordine di lettura da destra.
e come funziona invece per gli operatori unari che stanno "sullo stesso piano" ma su due lati diversi dell'operando? per esempio in che ordine vengono eseguiti gli operatori nell'espressione "++n++"?
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 12:45   #12
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4907
Quote:
Originariamente inviato da fero86 Guarda i messaggi
e come funziona invece per gli operatori unari che stanno "sullo stesso piano" ma su due lati diversi dell'operando? per esempio in che ordine vengono eseguiti gli operatori nell'espressione "++n++"?
L'espressione non ha senso perché non si può applicare l'operatore d'incremento ad una rvalue (il risultato del primo incremento).
Edit: comunque l'operatore postfisso e quello prefisso sono su livelli diversi.

Ultima modifica di ||ElChE||88 : 23-05-2009 alle 12:49.
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 15:45   #13
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da fero86 Guarda i messaggi
e l'evidente in questo caso sarebbe?
Sia che la valutazione avvenga da sinistra verso destra, sia che avvenga da destra verso sinistra, comunque deve prima fare il complemento e poi la negazione nel primo caso e prima la negazione e poi il complemento nel secondo.

Quote:
e come funziona invece per gli operatori unari che stanno "sullo stesso piano" ma su due lati diversi dell'operando? per esempio in che ordine vengono eseguiti gli operatori nell'espressione "++n++"?
L'incremento postfisso ha precedenza maggiore dell'incremento prefisso nello standard ISO IEC 9899:1999 (il C99). Le specifiche del C99 si possono scaricare da wikipedia (la terza revisione, sembra che ce ne sia anche una quarta).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Saros: mostrato il gameplay del gioco de...
God of War: Sons of Sparta annunciato e ...
John Wick torna in un nuovo videogioco a...
MADE chiude il 2025 con 59 partner e 250...
007 First Light: allo State of Play un n...
Gli iPhone su Amazon costano meno che su...
Credevi fosse un assistente IA, invece e...
God of War Trilogy Remake annunciato all...
Star Wars Galactic Racer mostra il gamep...
Legacy of Kain: Defiance Remastered annu...
Control Resonant si mostra allo State of...
Battlefield 6 Stagione 2: l'avanzata del...
Stop a umidità e muffa: deumidificatore ...
Trump l'anti-scientifico: la mossa per a...
Google ancora una volta nel mirino dell'...
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:00.


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