oggi sono qui per chiedere aiuto
in questi giorni ho scritto più volte di come scorrere un array, tra for o range based for o macro
ne abbiamo appena parlato
ora vorrei approfondire una cosa che mi rode da alcuni anni
ovvero scorrere in automatico un'area di memoria puntata da puntatore
magari mi potete aiutare, visto che sono arrivato ad un punto che mi sembra decente, ma non completamente soddisfacente
premessa:
ad ogni malloc() potrebbe corrispondere una free()
siccome la free() libera la giusta quantità memoria appare evidente che da qualche parte la va a leggere, questa quantità
io so dove (almeno su arduino UNO)
la dimensione in byte dell'area allocata da una malloc() è scritta sotto forma di un size_t "prima" dell'indirizzo restituito dal puntatore
saputo questo saputo tutto, sembra
batsa ricevere un puntatore, indietreggiare di un sizeof (size_t) e abbiamo fatto, sembra
perchè questo vale solo per memoria allocata da una malloc()
e se mi capitasse di trattare invece un array vero decaduto a puntatore? quindi non figlio di una malloc()?
o se si trattasse di un puntatore tratto da un operatore & invece che da una malloc()?
Mah, per quanto credo di aver capito (potrei sbagliare) ma non puoi fare free() di qualcosa non allocato in precedenza con malloc(), perché credo che quest'ultima utilizzi un suo "heap" e se il puntatore non appartiene al suo range rifiuta l'operazione.
Per ora non ho tempo per vedere meglio nei sorgenti delle librerie core avr ma qui forse si trova qualche risposta: