std::logic_error 错误的解决

        今天测试一个程序,突然出现一个 std::logic_error 错误,详细如下:

这个应该是 std::string 相关的一个错误,具体的错误信息还得用 GDB 跟踪一下了。

看第 8 栈帧已经是系统库里的东西了,第 9 帧是我本地的代码,于是只能查看代码了。

从函数调用栈上看,程序是在这个函数里崩溃的,一行行代码看下来,那只有getenv那两行代码可能存在问题了,这里用 getenv 返回的 char 指针构造一个 std::string,假如这个 getenv() 返回 NULL 指针,这个不就有问题了吗? man 了一个这个函数:

而我这个函数是跑一个 arm 板上的,所以这个环境变量可能就是没有,返回NULL指针了,于是在板子上看一下:

这个环境变量确实是空的,那问题就找到:用一个 NULL 指针去初始化 std::string ,产生了一个 std::logic_error,其实我们从抛出的异常里也可以看出一点端倪:

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值