3

我正在使用ctime函数来获得time_t变量的可读表示。ctime声明如下:

char *ctime (const time_t *timer);

您可以看到它返回一个指向结果 char 数组的指针,而没有在参数中传递任何 char 指针。因此,我想知道在哪里ctime分配 char 缓冲区,谁将销毁它,而不是在malloc被认为是一团糟的函数内部分配内存(当然,除了各种 's )。

有什么建议么?

4

1 回答 1

6

从您引用的链接:

保存此字符串的数组由 ctime 和 asctime 函数静态分配和共享。每次调用这些函数中的任何一个时,都会覆盖该数组的内容

该数组的存在时间与程序一样长,任何人都不得释放它。

POSIX 2008 有一个ctime_r可重入的函数(你传入你的缓冲区),但它在 C 或 C++ 中不是标准的。

于 2012-05-13T11:16:29.710 回答