考虑:
int main(){
string str("aaaaaaaaaa");
for (int i = 0; i < 1000; i++)
{
str += str.data();
}
}
对于较大的i
,会出现“bac_alloc”错误。
有没有办法防止这种情况发生?
如果没有,那么替代方式是什么(加长字符串)?
答案 0 :(得分:4)
您的代码str += str.data()
一次又一次地将字符串翻倍,1000次。这将以一个长度为10*2^1000
的字符串结束,这对于内存来说非常重要。您可能希望连接"aaaaaaaaa"
一千次,而不是将字符串加倍1000次:
string str;
for (int i = 0; i < 1000; i++) {
str += "aaaaaaaaaaa";
}