|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 924
|
[C] Modifica di array passato per riferimento
Ciao!
Sto impazzendo!!! Ho una funzione che deve ricevere delle stringhe dalla seriale e salvarli in un array di caratteri, ma non so perché non funziona!!! Grosso modo è così che chiamo la funzione: Codice:
void funz_b(char arr[])
{
//Modifico arr
}
void funz_a(void)
{
char arr[1024];
funz_b(arr);
}
In fase di compilazione non ricevo nessun errore. Preciso che questo programma deve essere caricato in un controller e non è quindi eseguito su pc. Avete idee? È scritto male il codice? Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 326
|
Ciao,
Strano, dovrebbe funzionare. Sei sicuro che in funz_b() non cerchi di accedere al di fuori del limite dell'array? Che errore ti da più di preciso?
__________________
The problem with Troubleshooting is that often trouble shoots back... |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2007
Messaggi: 924
|
No sono sicurissimo che non va fuori dall'array perché la dimensione gliela passo come parametro. Il fatto è che non mi da' nessun tipo di errore. Compilo e va tutto bene. Non ricevo neanche warning o cose simili perché sono stato molto attento a tutti i cast, assegnazioni e cose così, però quando carico il firmware nel dispositivo e lo avvio, arrivato al punto in cui deve assegnare il primo valore all'array si blocca e posso solo fare un hard reset.
Per la cronaca il controllore è un PIC32MX460F512L A questo punto ho cominciato a pensare che possa essere un problema di implementazione hardware o magari uno stack overflow, dato che è una funzione chiamata da un'altra funzione che a sua volta è chiamata dalla funzione main. Non so quanto sia grosso lo stack, so solo che ha 32Kb di ram. EDIT: È molto probabile che vada in stack overflow... Ora faccio altre prove. EDIT2: Ok, mi sono rinc@#?!*$&to... Non avevo inizializzato l'indice che scorreva l'array e quindi partiva da una posizione arbitraria della memoria. DoubleAJ, grazie comunque per l'interessamento Ciao! Ultima modifica di MrModd : 01-05-2010 alle 21:47. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:50.



















