Dubbio su puntatori e dimensioni

Salve gente,

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()?

avete idee?

io al momento le ho finite....

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:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.