Ciao a tutti,
ho semplice programma (leggi/scrivi) che va a gestire file di diversi giga.
Mi sono preoccupato di allocare sempre il minimo della memoria necessaria ad ogni stringa che vado ad utilizzare e di liberarne sempre lo spazio allocato. Nonostante questo la memoria continua ad aumentare velocemente fino ad arrivare al limite dei 2gb se scrivo un file di circa 3gb.
Mi rimangono quindi alcuni dubbi sull'utilizzo della memoria.
- Oltre a malloc/free che attualmente utilizzo solo su stringhe o su un paio di piccole typedef, devo prendere altre accorgimenti per mantenere bassa la memoria utilizzata?
- Come faccio a liberare la memoria utilizzata da una variabile che deve restituirmi il valore di una funzione? Per esempio...
codice:
char* AsciiToHex(char* sAscii,int Lunghezza)
{
char *StringaEsadecimale, *Hex;
int i;
StringaEsadecimale=(char*)malloc(Lunghezza*2+1);
StringaEsadecimale[0]='\0';
Hex=(char*)malloc(sizeof(char)*1);
for(i=0;i<Lunghezza;i++)
{
itoa((unsigned char)sAscii[i],Hex,16);
strcat(StringaEsadecimale,Hex);
}
return StringaEsadecimale;
}
... come a liberare lo spazio allocato a cui punta StringaEsadecimale?