Primjer ispod je jedan cirkularni bafer koji pravi do 2048 dinamickih alokacija memorije. Ako se zauzme svih 2048 pointera, ponovo se vraca na 0 i cisti/alocira novu memnoriju.
Problem je sto sam ja mislio da svaki poziv calloc zahtijeva i free.
Rekli su mi da ne mora, i da ce sam OS da ocisti memoriju kada se program prekine.
Da li je ovo tacno ili se radi o mem leak?
Code:
char *DYN_TmpStr (size_t Bites)
{
static int StrCnt;
static char *StrFunc[2048];
StrCnt=(StrCnt + 1) & 2047;
if(StrFunc[StrCnt]) free (StrFunc[StrCnt]);
return StrFunc[StrCnt]=(char*)calloc(Bites+128,sizeof(char));
}
char *DYN_TmpStr (size_t Bites)
{
static int StrCnt;
static char *StrFunc[2048];
StrCnt=(StrCnt + 1) & 2047;
if(StrFunc[StrCnt]) free (StrFunc[StrCnt]);
return StrFunc[StrCnt]=(char*)calloc(Bites+128,sizeof(char));
}
Problem je sto sam ja mislio da svaki poziv calloc zahtijeva i free.
Rekli su mi da ne mora, i da ce sam OS da ocisti memoriju kada se program prekine.
Da li je ovo tacno ili se radi o mem leak?