c++ - 如何初始化一个很长的数组?
问题描述
我只是想初始化一个巨大的数组。我的代码如下:
#include<iostream>
using namespace std;
int main()
{
int T;
cin >> T;
while (T--)
{
int d;
cin >> d;
int arr[d + 1];
for (int i = 0; i <= d; i++)
arr[i] = 0;
}
return 0;
}
现在当我输入
1 502334160
然后我得到了错误Runtime Error - SIGSEGV
。
我想知道如何初始化这种类型的数组。
解决方案
数组可能太大而无法放入程序的堆栈地址空间。如果你在堆上分配数组,你应该没问题。
int* arr = new int[d + 1];
但请记住,这将需要您进入delete[]
数组。更好的解决方案是使用std::vector<int>
并将其调整为d + 1
元素。
推荐阅读
- swift - 是否可以将 GeometryReader 的值传递给 @Observableobject
- c# - 我可以在不向客户端发送响应的情况下终止服务器上的 HTTP 事务吗?
- python - 尝试使用词袋概念生成特征列并合并到现有数据框
- python - 具有时间序列数据/行到列/重新组织数据到单行的数据透视表
- java - Spring webflux:在响应式请求处理的整个过程中保持 EntityManager 打开
- c# - 如何计算金额的间接费用
- javascript - 如何将事件从父级传递给子级以与功能组件做出反应?
- pouchdb - PouchDB 强制更新
- bash - 将格式化的日期行输出打印到 Bash 脚本中的文件
- javascript - 在 Node 中使用 googleapis 包交换访问令牌的授权码