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