請問 localtime() 為什麼不會造成 memory leak?

http://www.programmer-club.com.tw/ShowSameTitleN/vc/22380.html

***************************************************************************

以下是摘錄自 MSDN 的程式碼:

#include <time.h>
#include <stdio.h>

struct tm *newtime;
time_t aclock;

void main( void )
{
   time( &aclock ); /* Get time in seconds */

   newtime = localtime( &aclock ); /* Convert time to struct */
     /* tm form */

   /* Print local time as a string */
   printf( "The current date and time are: %s", asctime( newtime ) );
}

小弟感到無比的好奇,
為什麼 localtime() 傳回一個很明顯的指標, 卻不用在檔案結尾的時候 delete 之?
而且還不會造成 memory leak....
或者是 "某個人" 替我在程式結尾時自動 delete 了? 可程式碼裡頭又沒有 >_<...

請各位大大解惑, Thanks.


2005/7/28 上午 04:46:43
你如果有看MSDN裡, localtime函數底下Remark那一段, 應該就不會有疑問了.

gmtime, mktime, localtime, 使用的都是一個固定的空間 (static), 因此無論你呼叫多少次, 傳回的位址都是相同的 (也就那塊固定空間的位址). 每次呼叫這三個函數之一, 就會破壞之前傳回位址指向的內容 (因為都是使用相同的空間). 既然是固定空間, 當然也就不用free了.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值