附加std字符串时出现bad_alloc异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了附加std字符串时出现bad_alloc异常相关的知识,希望对你有一定的参考价值。
考虑:
int main(){
string str("aaaaaaaaaa");
for (int i = 0; i < 1000; i++)
{
str += str.data();
}
}
对于大型i
,会出现“bac_alloc”错误。有没有办法防止这种情况发生?如果没有,那么替代方式是什么(加长字符串)?
答案
你的代码str += str.data()
一次又一次地将字符串翻倍,1000次。这将最终形成一串长度为10*2^1000
的长度,这对于记忆来说是非常重要的。您可能想要连接"aaaaaaaaa"
一千次,而不是将字符串加倍1000次:
string str;
for (int i = 0; i < 1000; i++) {
str += "aaaaaaaaaaa";
}
以上是关于附加std字符串时出现bad_alloc异常的主要内容,如果未能解决你的问题,请参考以下文章
解决程序出现“terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_a
C++:在计算大字符串的长度时抛出“std::bad_alloc”的实例后调用终止
第一个代码中的错误,但第二个正确“在抛出 'std::bad_alloc' what() 的实例后调用终止:std::bad_alloc Aborted(core dumped)”
我的Android进阶之旅解决安装apk时出现错误:INSTALL_FAILED_CONFLICTING_PROVIDER : Package couldn‘t be installed in(代码片