C++系统函数调用踩坑

C++编程时候,时不时会用到一些系统函数,有可能会遇到踩坑的情况

1. mktime

踩坑现象:mktime返回-1

tm t;
time_t timeT = mktime(t);

分析原因:不一定出现,不同编译器表现也不一样,我这边用的一个64位编译器上遇到概率大,怀疑是内部的内容没有初始化会有脏数据导致
解决:规范写法,需要memset

tm t;
memset(&t,0,sizeof(tm));
time_t timeT = mktime(t);

2. localtime

踩坑现象:执行后出来year是255

		struct tm *t ;
		t = localtime(UtcTime);
		t->year;

分析原因:由于里面的tm是内部控制,一样不确定是否会存在mktime一样的问题.上遇到了概率性出现问题,概率获取出来是year是255

解决:尽量使用 localtime_r,同时它还是线程安全的

		struct tm t ;
		memset(&t,0,sizeof(tm));
		localtime_r(&UtcTime,&t);
		t.year;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值