std::bad_alloc 异常产生原因之一

本文解释了在C++中,返回局部std::string引用可能导致std::bad_alloc异常的情况,尤其是在非成员函数中,由于变量析构后访问引用。提醒读者注意返回非成员变量时的生命周期问题及高效传递策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

const std::string &test()
{
    return "123456";
}

void main()
{
    auto str = test();
}

调用上面的test()函数就会产生std::bad_alloc 异常,原因是return时构造了内容为123456的std::string变量,返回引用后变量就被析构了,再访问这个引用就会出现这个异常。

总结:const std::string &用来返回类的成员变量时效率高,不用重新构造返回的std::string, 但非成员变量时要注意这种情况。作为传参时倒是无所谓,const std::string &作为传参减少构造效率高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值