【问题标题】:What is the maximum number of elements that can be stored in array in C++? [duplicate]C ++中可以存储在数组中的最大元素数是多少? [复制]
【发布时间】:2018-01-23 12:03:30
【问题描述】:

我们可以在整数数组中存储最多 [10000000] (10^7) 的元素。有没有办法存储更多的数据。还有字符数组的最大大小是多少。请原谅如果这个问题重复了,我就删了。

【问题讨论】:

  • 你从哪里得到 10000000 这个数字?我认为唯一的限制是可用内存。
  • "我们只能在整数数组中存储不超过 [10000000] (10^7) 的元素" 你从哪里得到这样的数字?数组的大小仅受堆栈大小的限制,如果它被分配为具有自动存储持续时间的变量,或者你的 RAM 的大小,如果它是动态分配的(通过使用new、std::vector 等)。 .),即使那样,也有诸如交换之类的操作系统功能..
  • @Carcigenicate 全球声明
  • @Mukesh 然后只增加常量大小?
  • @Mukesh 通常,此类站点会对您提交的程序施加一定的内存/执行时间限制。我怀疑它是否会让您的程序以 3.75GB 的内存使用量运行。优化你的算法,这样你就不需要这么大的数组了。

标签: c++ arrays c++11


【解决方案1】:

C++中数组最多可以存储多少个元素?

理论上,上限是std::size_t 可表示的最大值。这个值是实现定义的。这适用于大小为 1(字节)的对象。您只能拥有大小为 2 的对象的一半。整数类型的大小由实现定义(窄字符类型除外)。

在实践中,还存在其他限制。这取决于存储时间和系统。

自动变量的内存量在大多数系统上都是有限的。具体多少取决于系统,有时是可配置的,但台式机的典型默认值为 1 到几兆字节。

静态变量和动态对象通常没有这样的限制,上限是操作系统给进程的主内存+交换空间的数量。其上限是系统上的内存量 + 交换量减去其他进程和操作系统内核使用的内存量。

更大的数组可以存储在磁盘上,并使用分页系统进行访问。此类对象的上限受虚拟内存量、文件系统和可用存储大小的限制。

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2011-08-02
    相关资源
    最近更新 更多