PDA

View Full Version : [C] Modifica di array passato per riferimento


MrModd
01-05-2010, 20:02
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:

void funz_b(char arr[])
{
//Modifico arr
}

void funz_a(void)
{
char arr[1024];
funz_b(arr);
}

Cosa c'è di sbagliato???

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.

DoubleAJ
01-05-2010, 20:54
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?

MrModd
01-05-2010, 21:25
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!