创建GET_TIME()函数,我有这个简单的功能:问题用C
char*
get_time()
{
char *buffer = malloc(sizeof(char)*10); /* HOW TO FREE IT ? */
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
strftime(buffer,10,"%H:%M:%S",timeinfo);
return buffer;
}
问题是strftime()
这需要char*
,我不能free(buffer);
回他的内容之前。我能做什么?
,我使用的功能的宏:
#define log_info(msg) printf("%s [INFO ] - %s\n",get_time(), (msg))
给予缓冲作为GET_TIME的参数,并在调用者 –
这是C的性质使用静态缓冲区:如果函数需要返回一个字符串,你必须让呼叫者为它分配空间并传入一个缓冲区。另一个可能在这里工作的选择是返回一个固定大小的结构。 –
或者说清楚,调用者必须释放缓冲区,这也是常见的 – pm100