内存限制超出 bad_alloc

Memory limit exceeded bad_alloc

本文关键字:bad alloc 内存      更新时间:2023-10-16

我正在解决一个关于codeforce的问题,它给了我超出内存,甚至在我的本地编译器上,它说'std::bad_alloc' 有人可以解释为什么以及如何解决这个!!

int tst;
cin >> tst;
while(tst--){
string s;
cin >> s;
ll n=s.length();
string ans;
if(n==2){
cout<<s<<endl;
}
else{
if(n%2!=0){
for(int i=0;i<n;i+2){
ans.push_back(s[i]);
}
ans.push_back(s[n-1]);
}
else{
for(int i=0;i<n;i+2){
ans.push_back(s[i]);
}
}
cout<<ans<<endl;
}

}

因此,首先,指定您的问题陈述。

其次,请注意这个循环:

for(int i=0;i<n;i+2){
ans.push_back(s[i]);
}

以这种方式编写的循环将是无限的,因为你根本没有递增ii将等于零,整个循环都(无限次(。

因此,此外,您正在尝试通过无限循环中的n元素来扩大您的容器。你可能会看到,记忆不是无限的资源。

要解决此问题,只需像这样重写循环:

for(int i=0;i<n;i+=2){
ans.push_back(s[i]);
}