我正在使用ctime函数来获取time_t
变量的可读表示。 ctime
声明如下:
char *ctime (const time_t *timer);
你可以看到它返回一个指向结果char数组的指针,而没有在参数中传递任何char指针。因此,我想知道ctime
在哪里分配char缓冲区以及谁将销毁它并且不在内部分配内存(当然除了各种malloc
之外)被认为是一团糟。
有什么建议吗?
答案 0 :(得分:6)
从您引用的链接:
保存此字符串的数组是静态分配并由ctime和asctime函数共享。每次调用其中一个函数时,都会覆盖此数组的内容
只要程序执行该数组,就不能被任何人释放。
POSIX 2008有一个可重入的ctime_r
函数(你传入缓冲区),但它在C或C ++中不是标准的。