为了账号安全,请及时绑定邮箱和手机立即绑定

C+中是否存在最大数组长度限制?

C+中是否存在最大数组长度限制?

C++
撒科打诨 2019-07-04 15:00:23
C+中是否存在最大数组长度限制?C+中的数组有最大长度吗?是C+限制还是依赖于我的机器?可以调整吗?它是否取决于数组的类型?我能以某种方式打破这个限制吗?还是我必须寻找一种更好的存储信息的方法?最简单的方法应该是什么?我要做的是在数组上存储长int,我正在Linux环境中工作。我的问题是:如果我需要存储N>10位数的N个长整数数组,该怎么办?我需要这样做,因为我正在为学校编写一些密码算法(例如p-Pollard),并撞上了整数和数组表示长度的墙。
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

从实际而非理论的角度来看,在32位Windows系统上,单个进程的最大可用内存总量为2GB。您可以通过使用具有更多物理内存的64位操作系统来打破限制,但是这样做还是寻找替代方案在很大程度上取决于您的预期用户和他们的预算。您还可以使用PAE.

数组的类型非常重要,因为许多编译器的默认结构对齐是8字节,如果内存使用是一个问题,这是非常浪费的。如果您正在使用VisualC+来锁定Windows,请查看#语用包指令是克服这一问题的一种方法。

另一件事是看看内存压缩技术对你有什么帮助,比如稀疏矩阵,动态压缩等等.同样,这是高度依赖于应用程序的。如果你编辑你的帖子,提供更多关于数组中实际内容的信息,你可能会得到更多有用的答案。

编辑:给出关于您的确切需求的更多信息,您的存储需求似乎在7.6GB到76 GB之间未压缩,这将需要一个相当昂贵的64位框才能在C+中作为一个数组存储在内存中。这引发了一个问题:为什么要将数据存储在内存中,在内存中假定访问速度,并允许随机访问。将这些数据存储在数组之外的最佳方法基本上是基于您想要访问它的方式。如果您需要随机访问数组成员,那么对于大多数应用程序来说,通常都有对数据块进行分组的方法,这些数据块往往同时被访问。例如,在大型地理信息系统和空间数据库中,数据往往是按地理区域平铺的。在C+编程术语中,您可以重写[]数组操作符,以便根据需要从外部存储中获取数据的一部分。


查看完整回答
反对 回复 2019-07-04
  • 3 回答
  • 0 关注
  • 1126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信