为什么我在运行此代码时收到 std::bad_alloc 异常
Why do I receive a std::bad_alloc exception when running this code?
当我运行下面的代码时,我收到这样的错误:
在抛出"std::bad_alloc">
实例后终止调用 什么((: 标准::bad_alloc此应用程序已请求运行时在 不寻常的方式。请联系应用程序的支持团队了解更多信息 信息。
我认为这可能是由"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;
}
std::string::max_size()
很可能是一个很大的数字,例如SIZE_MAX
,例如32位系统上的4 GB或64位系统上的平方。因此,您的程序内存不足。
您的程序甚至不需要该分配,因为您会立即用单字符字符串覆盖前 2 个字符串! 也许您正在考虑reserve
而不是resize
,但即便如此,您也可以保留比max_size
少得多的金额。
铌。 register
已弃用,将在 C++17 中删除。
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::向量与传递值的动态数组
- 使用std::vector的OpenCL矩阵乘法
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- std::condition_variable::wait()如何评估给定的谓词
- 如何获取std::result_of函数的返回类型
- std::原子加载和存储都需要吗
- 将对象移动到std::shared_ptr
- 获取错误:在抛出"std::bad::alloc"的实例后终止调用 what(): std::bad_alloc
- "std::vector"在调整大小时引发"bad allocation"异常
- 成员函数 bad() 的 std::ftsream 用于检查
- 正在使用std::string而不是char*bad
- 在抛出 'std::bad _alloc' 的实例后调用终止 what(): std::bad_alloc 在 c++ 中
- What is Scala for: getline(), std::cin.eof(), std::cin.bad()