数组的大小超过CPP中的最大对象大小

  • 本文关键字:对象 数组 CPP c++ c++14
  • 更新时间 :
  • 英文 :


最近,我在解决背包的变化问题时遇到了这个错误。谁能建议一些方法来摆脱它?

const int n=105, w= 1000000005;
int val[n], ans[n][w];
int weight[n];

错误:数组'ans'的大小'4000000020'超过最大对象大小'2147483647'.

您所做的是创建Tera字节的内存分配。通常你在堆中做这些类型的分配(使用像std::vector<int> val(n);std::vector<std::vector<int>> ans(n, std::vector<int>(w));这样的向量)。但是,您确定需要那么大的内存吗?毕竟你谈论了多达105,000,000,525个整数。

谁能建议一些方法来摆脱它?

  • 选项1:使数组更小,这样它就不会超过限制。
  • 选项2:目标系统具有更高的限制。
  • 选项3:动态分配数组。一个简单的方法就是使用std::vector

最新更新