GESTIONE MEMORIA IN C

di il
1 risposte

GESTIONE MEMORIA IN C

Salve ragazzi, sto programmando in c per un esame d'università e sono arrivato a un problema che non riesco a risolvere da solo, perciò chiedo aiuto a voi:

supponiamo io voglia creare una funzione che prenda in input un puntatore ad un array di stringhe (chiamato as) e voglio che la mia funzione riempi
as dinamicamente assegnando ad ogni cella di as un puntatore a stringa che creo dinamicamente nella funzione. Per far cio utilizzo la chiamata malloc per allocare spazio per la k-esima stringa che andrò a creare per infilarla nella k-esima posizione di as. Fin qui tutto bene se non fosse che questa funzione oltre a funzionare deve anche gestire in maniera efficente la memoria (uso valgrind).
Arrivo dritto al punto:
se io in una funzione memorizzo dinamicamente dati in un array dato in input faccio questo:
chiamo la malloc, ottengo il puntatore alla cella inziale della porzione di memoria liberata, la riempio con quello che mi serve e assegno il puntatore a una cella della array di stringhe da riempire.
Il fatto è che se io dopo aver fatto questo chiamo la free sul puntatore ottengo degli errori in valgrind perche sto liberando delle porzioni di memoria che ancora mi servono. Ho provato quindi a liberarle nel main dopo aver chiamato la funzione e aver usato l'array, ma valgrind mi dice che faccio free
non valide.
Quindi la mia domanda è:
Come posso riempire dinamicamente una struttura dati in una funzione gestendo al meglio la memoria (0 errori su valgrind)?

Mi scuso se non mi sono spiegato bene, sono pronto a rispondere a qualsiasi domanda per delucidazioni

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte