ctime在哪里以及如何分配内存?

时间:2012-05-13 11:14:02

标签: c++ memory-management ctime

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

char *ctime (const time_t *timer);

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

有什么建议吗?

1 个答案:

答案 0 :(得分:6)

从您引用的链接:

  

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

只要程序执行该数组,就不能被任何人释放。

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