Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-05-2009, 18: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 19:46.
Tel Mark è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2009, 18:06   #2
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1060
comunque questo non è c#
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 22-05-2009, 19: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, 19: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 22-05-2009, 23: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 22-05-2009, 23: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, 00: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, 01: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, 02: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, 04: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, 10: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, 11: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 11:49.
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2009, 14: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


DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
The Mandalorian & Grogu: trailer fin...
Fedeltà record: Apple blinda gli utenti,...
Volkswagen ID.3 Neo: fino a 630 km di au...
GPU-Z mette i dati personali a rischio? ...
La PS6 potrebbe essere retrocompatibile ...
Amazfit Cheetah 2 Pro arriva in Italia: ...
Duolingo ammette l'errore dopo un anno: ...
Samsung Galaxy Tab S10 Lite a 249€: il t...
Samsung Micro RGB: la rivoluzione del co...
Sempre più autonomia per gli smar...
Windows sotto attacco: tre zero-day di M...
Capcom e NVIDIA spiegano il path tracing...
Commissione UE contro Google: Big G dovr...
Pale eoliche che durano 500 anni grazie ...
Blink Mini Pan-Tilt a 19,99€: la telecam...
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: 14:32.


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