【发布时间】:2017-12-21 08:08:59
【问题描述】:
考虑:
int main(){
string str("aaaaaaaaaa");
for (int i = 0; i < 1000; i++)
{
str += str.data();
}
}
对于较大的i,会出现“bac_alloc”错误。
有什么办法可以防止这种情况发生吗?
如果没有,还有什么替代方法(加起来长字符串)?
【问题讨论】:
-
简单写
str += str;有什么问题? -
您认为到底发生了什么?根据我的计算,您正在执行“aaaaaaaaaa”* 2^1000,这等于 1,07150860718626732094842504906e+302 字节的已用内存
-
我认为使用 .data() 可以解决问题,但还是一样。
-
你从哪里得到 2^1000?
-
一次又一次地加倍,即x*2*2*2*2....,1000次,表示x*2^1000。我不知道你的机器,但我很确定这不会工作。