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/