Когда я запускаю этот код, я получаю сообщение об ошибке, как это:Почему при запуске этого кода я получаю исключение std :: bad_alloc?
Terminate вызывается после метания экземпляра 'станд :: bad_alloc'
какой(): станд :: bad_allocЭтом приложение попросило Runtime прекратить его в необычном способе . Обратитесь в службу поддержки приложения за дополнительной информацией .
Я думаю, это может быть вызвано линией «resize()», но я не знаю, как ее исправить. Вот мой код:
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
long long n, l, r;
string x[3];
int main()
{
ios::sync_with_stdio(false);
for (int i = 0; i <= 2; i++)
x[i].resize(x[i].max_size());
x[0] = '0';
x[1] = '1';
cin >> n >> l >> r;
for (register long long i = 2; i <= n ; i++)
x[i % 3] = x[(i - 2) % 3] + x[(i - 1) % 3];
cout << x[n % 3].substr(l, r - l + 1) << endl;
return 0;
}
Не изменяйте размер вашей строки настолько большой. Вы пытались распечатать размер, который вы пытаетесь изменить? –
Вам вообще не нужно изменять их размер. 'c = a + b' автоматически выделяет достаточное количество хранилища в' c'. – aschepler
Да, это 2147483647 – godwings