32位Linux与64位Linux系统中指针 小小差别

sizeof 笔误

....

log_error ("#######Test Only - 02: login=%s, operator=%s", login_name, operator_name);

....

strncpy (operator_name,

              login_name,

              sizeof (operator_name - 1));

....

log_error ("#######Test Only - 03: login=%s, operator=%s", login_name, operator_name);

 

最终调试结果:

2010-05-28: 20:31:18 #######Test Only - 02: login=tando, operator=

2010-05-28: 20:31:18 #######Test Only - 03: login=tando, operator=tand

(两个字符数组变量定义都是正确的,长度为12)

最囧的是其他服务器上没有这个bug,只在某一台上出现而且是比较正式的综合服务器,调试相当的麻烦。

"sizeof (operator_name - 1)" 取到的是地址长度,查看了下服务器版本 -

Linux version 2.6.9-42.ELsmp, gcc version Red Hat Linux 3.4.6-2  (不出问题的server,64位),地址大小为8字节
Linux version 2.4.21-47.ELsmp, gcc version Red Hat 3.2.3-54 (出现问题的server,32位),地址大小4个字节

 

难道老外写代码不通过QA直接就deliver了.

这样的笔误耗去的是几天时间,有些失误可能一辈子也调试不出来。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值