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

ton*_*ony 3 c++ memory-management ctime

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

char *ctime (const time_t *timer);
Run Code Online (Sandbox Code Playgroud)

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

有什么建议?

Mat*_*Mat 6

从您引用的链接:

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

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

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

  • 如果您不喜欢这种行为,您的平台可能会有`ctime_r`. (3认同)