我们可以在 C++ 编程中使用的二维数组的最大大小是多少?

What is the maximum size of 2 dimensional array that we can use in c++ programming?

本文关键字:二维数组 多少 C++ 编程 我们      更新时间:2023-10-16

>我尝试使用 10^6 x 10^6 数组,它给了我分段错误

如果使用自动存储持续时间声明数组,则大小限制非常小,约为 1Mb。

如果您使用的是动态存储持续时间(使用newnew[]),那么限制要高得多。

但对于您的巨大阵列来说,两者都是不够的(在我撰写本文时)!不过,您也许可以实例化此秩的稀疏矩阵- 请参阅 Boost 发行版中的 BLAS 库。

您需要一台至少具有 4 TB RAM 的计算机。你有这么昂贵的电脑吗(可能要花费一百万欧元,或者至少几十万欧元)。

自 1012个数字的四个字节(例如int-s) 每个需要 4 TB。添加所有这些可能需要一个或几个小时(因为典型的操作需要纳秒)。

如果你有一台 16 GB 的普通笔记本电脑,你最多可以有一个大约 40000 * 40000 个元素的方阵,例如 16 亿个元素(每个元素可能需要 4 或 8 个字节;因为在我的 Linux x86-64 桌面上sizeof(long)sizeof(double)是 8 个字节)。

如果矩阵的大多数元素为零,则称为稀疏矩阵,您将使用不同的数据结构来表示它。有许多资源(书籍,软件库,数学理论,编程技术,数值分析问题)与之相关,您可以将您的职业生涯奉献给稀疏矩阵。

另请阅读有关哈希表,数据库,虚拟内存,抖动...

它仅取决于计算机的内存大小以及操作系统分配给进程的内存量。您可以请求您的操作系统在(执行)将进程提交到您的操作系统时需要多少内存。