aix使用g++编译时一个stl string的问题

        当好不容易解决了异常抛出不捕捉等问题之后,我在aix上又碰到了新的问题,同样的代码在linux下运行无误,但在aix下,总是出现core dump,每次core dump的位置均不一样,但是都出现在stl string相关的处理上。并且此问题大部分时候都要程序较长时间运行才会出现,大约要一个小时,处理数据10万条以上。

        花费了近一周的时间调试和在网上查找资料,猜测可能是由于string拷贝时的引用计数在多线程下出现问题,导致string在尚在使用时提前析构。于是把公司基类中封装的字符串类重载的等号由调用stl string的等号改为使用assign进行拷贝,经测试问题解决,程序core dump的情况消失了。

        令人不解的是,仔细检查了多线程的地方,并发的地方都进行了正确的加锁,很难理解会有引用计数失效的问题,但是如果不是这样的解释,为什么这样的改动能够解决问题?答案对我来说完全成谜了,希望有人有更好的答案。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值