【问题标题】:Where and how does ctime allocate memory?ctime 在哪里以及如何分配内存?
【发布时间】:2012-05-21 05:22:53
【问题描述】:

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

char *ctime (const time_t *timer);

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

有什么建议吗?

【问题讨论】:

    标签: c++ memory-management ctime


    【解决方案1】:

    来自您引用的链接:

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

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

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

    【讨论】:

    • 如果你不喜欢这种行为,你的平台可能有ctime_r
    • 太可惜了...我没想到我可以如此专心。对不起,愚蠢的问题,谢谢=)
    • @DavidSchwartz:行!我一直对静态分配的东西感到恼火,但从未想过检查是否存在可重入版本。
    猜你喜欢
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2016-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多