附加std字符串时出现bad_alloc异常

时间:2017-12-21 08:09:00

标签: c++ stl std

考虑:

int main(){    
    string str("aaaaaaaaaa");        
    for (int i = 0; i < 1000; i++)
    {
       str += str.data();
    }
}

对于较大的i,会出现“bac_alloc”错误。 有没有办法防止这种情况发生? 如果没有,那么替代方式是什么(加长字符串)?

1 个答案:

答案 0 :(得分:4)

您的代码str += str.data()一次又一次地将字符串翻倍,1000次。这将以一个长度为10*2^1000的字符串结束,这对于内存来说非常重要。您可能希望连接"aaaaaaaaa"一千次,而不是将字符串加倍1000次:

string str;
for (int i = 0; i < 1000; i++) {
   str += "aaaaaaaaaaa";
}