Det som returneras från localtime är en pekare till statiskt allokerat minne (man localtime ;) ), så det ska inte freeas.
Frågan#1
Förstår inte riktigt varför jag inte får göra free på tmp variabeln i detta C program,
int main(int argc, char *argv[])
{
char *date=getCurrentDate();
printf("%s\n",date);
free(date);
return(0);
}
char* getCurrentDate()
{
[B]struct tm *tmp;[/B]
char *date=malloc(sizeof(char)*20);
time_t ttime;
ttime=time(NULL);
tmp=localtime(&ttime);
strftime(date, 20, "%Y-%m-%d", tmp);
return(date);
}
den är deklarerad som en pekare och tar emot en pekare från localtime, men om jag försöker göra free på den så får jag "Segmentation fault" och om jag låter den vara så fungerar allt ok och jag har inget minnes läckage, men varför?? Är det inte min uppgift att ta bort alla pekare som hjälp funktioner retunerar till mig?
/Viktor


