附加标准字符串时出现 bad_alloc 异常
got bad_alloc exception when appending a std string
考虑:
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";
}
考虑:
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";
}