如何将1 000000000项存储在阵列中?

时间:2019-02-28 22:46:27

标签: c arrays int

我正在做我老师要求的运动。这项工作需要评估大量值(精确到1000000000000),并且当我尝试在get数组中添加值时,程序出现错误。

我认为我必须使用public class Status { public string CodeStatus => CodeStatusEnum.ToString(); //Optionally add //[JsonIgnore] // to exclude it from Json Serialization public Codes CodeStatusEnum { get; set; } //Could also be //public string CodeStatus { get { return CodeStatusEnum.ToString(); } } public enum Codes { Unknown = 0, Green=1, Yellow=2, Red =3 } } ,但是前一段时间我已经学到了这些东西,我不记得该怎么做。我还认为尝试直接评估值是可行的,但是我认为也需要保存数据的唯一方法

PosFez

2 个答案:

答案 0 :(得分:0)

  

这项工作需要评估大量值(精确到1000000000000),并且当我尝试在PosFez数组中添加值时,程序出现错误。

 int PosFez[m];

您不能在堆栈中有一个1000000000 000 int 的数组,堆栈大小是有限的(通常是几兆字节,请参阅Linux / Unix下的 ulimit ),分配头部中的数组,例如使用 malloc

如果不确定是否需要这么大的数组,可以分配更少的数组,并且每次需要使用 realloc 增大其大小

答案 1 :(得分:0)

首先让我们做一个快速计算: 假设int在您的计算机上占用4字节(32位),则仅需要大约3.7GB RAM即可存储数据。因此,如果您只有4GB的内存,则由于操作系统和其他程序已经占据了很大一部分,您可能会用完它。

第二,如其他用户所提到的,此数据量将不适合堆栈。例如,您必须使用malloc来分配内存。 This site应该可以帮助您学习如何。

如果您真的有那么多值,我想数据是以某种文件形式提供给您的。无需将所有内容加载到内存中,只需解析文件并逐步评估它即可。 否则,您总是可以将数据写入文件中,然后从那里开始。