<!-- lang: cpp --> struct tm *localtime(const time_t *timep); struct tm *localtime_r(const time_t *timep, struct tm *result);
localtime是直接返回strcut tm*指針(若是成功的話);這個指針是指向一個靜態變量的;所以,返回的指針所指向的靜態變量有可能被其餘地方調用的localtime改掉,例如多線程使用的時候。安全
localtime_r則是由調用者在第二個參數傳入一個struct tm *result指針,該函數會把結果填充到這個傳入的指針所指內存裏面;成功的返回值指針也就是struct tm *result。多線程
其餘的時間函數,如asctime,asctime_r;ctime,ctime_r;gmtime,gmtime_r都是相似的,因此,時間函數的 _r 版本都是線程安全的。函數