附加性std字符串时,bad_Alloc异常

got bad_alloc exception when appending a std string

本文关键字:bad Alloc 异常 std 字符串      更新时间:2023-10-16

考虑:

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";
}