logic error string constuct not null

    我在 gcc 4.8 版本上编译程序时,在程序的运行时突然抛出了一个  " logic error std::string not null " 的错误。

    网上对 "logic error " 的解释:

    

class logic_error

此类用作引发报告执行程序前大概可检测的错误(例如,违反逻辑前提条件)的所有异常的基类。

class logic_error : public exception {  
public:  
    explicit logic_error(const string& message);

    explicit logic_error(const char *message);

};  



    以前在 gcc 4.4 上编译的时候从未出现过这情况,而且不是一直都出现这种错误,而且偶尔才出现这情况。于是,只有 gdb 单步调试查看哪出问题。

    很快,在一个 std::string 的字符串初始化的地方,引发了这个 bug。原来函数的返回值是一个 string 类型,而在某个分支里面却返回了 false 这个布尔值类型。当 false 这个布尔值类型赋值给 std::string 初始化的时候,编译器把这个 false 当作是 NULL 空指针,而给 std::string 赋值一个 NULL,则会触发 " logic error " 异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值