I'm using ctime function to get a readable representation of time_t variable. ctime is declared as follows:

char *ctime (const time_t *timer);

and you can see that it returns a pointer to the resulting char array without any char pointer passed in arguments. Thus I'm wondering where does ctime allocate char buffer and who will destroy it and isn't allocating memory inside function (except various malloc's, of course) considered to be a mess.

Any suggestions?

有帮助吗?

解决方案

From the link you quote:

The array which holds this string is statically allocated and shared by both the ctime and asctime functions. Each time either one of these functions is called the content of this array is overwritten

That array lasts as long as the program does, it must not be freed by anyone.

POSIX 2008 has a ctime_r function that is re-entrant (you pass in your buffer), but it is not standard in C or C++.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top