繁体   English   中英

附加标准字符串时出现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";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM