开发者社区> 问答> 正文

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

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

它是C ++限制还是取决于我的计算机?可以调整吗?它是否取决于数组的类型?

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

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

我需要这样做是因为我正在为学校编写一些加密算法(例如p-Pollard),并碰到了整数和数组表示长度的墙。

展开
收起
保持可爱mmm 2020-02-06 22:49:42 975 0
1 条回答
写回答
取消 提交回答
  • 有两个限制,不是由C ++强制执行,而是由硬件强制执行。

    通过用于描述数组中的索引的大小类型(及其大小)的限制来设置第一个限制(永远不会达到)。它由系统std::size_t可以采用的最大值给出。此数据类型应始终是系统的最大整数类型。

    另一个限制是物理内存限制。数组中的对象越大,因为内存已满,越早达到此限制。例如,vector 给定大小为n的a通常占用的内存约为类型数组的四倍vector (减去较小的常数)。因此,a vector 可能比vector 内存已满之前包含的项目更多。本地C样式数组int[]和的计数相同char[]。

    此外,此上限可能会受allocator用于构造的类型的影响,vector因为an allocator可以随意使用其想要的任何方式来管理内存。一个非常奇怪但仍然可以想到的分配器可以以相同对象实例共享资源的方式来缓冲内存。这样,您可以将许多相同的对象插入容器,否则将耗尽所有可用内存。

    除此之外,C ++没有任何限制。

    问题来源于stack overflow

    2020-02-06 22:50:38
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载