大家好,欢迎来到IT知识分享网。
首先它过时了。
其次,它会污染内存。
事发于某个业务执行时需要写日志,但调用完日志后(日志中有调用ftime),调用处附近的变量值莫名地被修改了。
用gdb的watch定位到日志上。
gdb显示问题出在ftime()上。
// 取系统时间精确到ms void CDTLog::GetSysDateTimeMill(char* tm) { struct timeb millsec; ftime(&millsec); char ls_time[20], t1[24]; time_t timer; time(&timer); struct tm* lt_time; lt_time = localtime(&timer); strftime(ls_time, 20, "%Y-%m-%d %H:%M:%S", lt_time); sprintf(t1, "%s %3dms", ls_time, millsec.millitm); sprintf(tm, "%s", t1); }
换成C++的std::chrono就没这b问题了
// 取系统时间精确到ms void CDTLog::GetSysDateTimeMill(char* str) { auto now = std::chrono::system_clock::now(); auto tt = std::chrono::system_clock::to_time_t(now); tm tm_now = *gmtime(&tt); auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()) .count() % 1000; strftime(str, 32, "%Y-%m-%d %H:%M:%S", &tm_now); sprintf(str, "%s %dms", str, ms); }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/115100.html