c++ - C++ 中是否有最大数组长度限制?

标签 c++ arrays

C++ 中的数组有最大长度吗?

这是 C++ 限制还是取决于我的机器?可以调整吗?是否取决于组成数组的类型?

我能否以某种方式打破这一限制,还是必须寻找更好的信息存储方式?最简单的方法应该是什么?

我要做的是将 long long int 存储在一个数组上,我在 Linux 环境中工作。我的问题是:如果我需要存储一个 N > 10 位的长整数数组,我该怎么办?

我需要这个,因为我正在为学校编写一些密码算法(例如 p-Pollard),并且遇到了整数和数组长度表示的这堵墙。

最佳答案

没有人提到栈帧的大小限制。

有两个地方可以分配内存:

  • 在堆上(动态分配的内存)。
    此处的大小限制是可用硬件和操作系统通过使用其他设备来临时存储未使用数据(将页面移动到硬盘)来模拟空间的能力的组合。
  • 在堆栈上(本地声明的变量)。
    这里的大小限制是编译器定义的(可能有硬件限制)。如果您阅读编译器文档,您通常可以调整此大小。

因此,如果您动态分配数组(限制很大,其他帖子中有详细描述。

int* a1 = new int[SIZE];  // SIZE limited only by OS/Hardware

或者,如果数组是在堆栈上分配的,那么您会受到堆栈帧大小的限制。 注意 vector 和其他容器在堆栈中的存在量很小,但通常大部分数据将在堆上。

int a2[SIZE]; // SIZE limited by COMPILER to the size of the stack frame

关于c++ - C++ 中是否有最大数组长度限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/216259/

相关文章:

ios - 用 NSFetchRequest => [数组计数] 错误填充 NSArray

C++。指向模板函数的函数指针产生 Unresolved 重载函数类型错误

c++ - 在 C++ 中创建静态库 (.a)(不适用于 iOS)

c++ - 我如何使用中点圆算法去除在 SDL 中绘制的圆中的这些间隙?

javascript - 如何从 angular2 中数组的键值对创建 json

c++ - 通过递归向前和向后设置数组最小值

c++ bool模板避免if语句

c++ - 寻找有关何时使用 if 语句展开循环的意见

arrays - 如何在 Flutter 的 Firestore 中向数组添加相等的元素?

c++ - 在构造函数中初始化静态数组 (C++)