我们可以在 C++ 编程中使用的二维数组的最大大小是多少?
What is the maximum size of 2 dimensional array that we can use in c++ programming?
>我尝试使用 10^6 x 10^6 数组,它给了我分段错误
如果使用自动存储持续时间声明数组,则大小限制非常小,约为 1Mb。
如果您使用的是动态存储持续时间(使用new
和new[]
),那么限制要高得多。
但对于您的巨大阵列来说,两者都是不够的(在我撰写本文时)!不过,您也许可以实例化此秩的稀疏矩阵- 请参阅 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 个字节)。
如果矩阵的大多数元素为零,则称为稀疏矩阵,您将使用不同的数据结构来表示它。有许多资源(书籍,软件库,数学理论,编程技术,数值分析问题)与之相关,您可以将您的职业生涯奉献给稀疏矩阵。
另请阅读有关哈希表,数据库,虚拟内存,抖动...
它仅取决于计算机的内存大小以及操作系统分配给进程的内存量。您可以请求您的操作系统在(执行)将进程提交到您的操作系统时需要多少内存。
相关文章:
- 将值从二维数组输出到文本文件
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- 如何使用用户输入变量制作二维数组?
- C++ 中动态二维数组的访问冲突
- 遍历二维数组的所有子数组
- 将二维数组的所有元素插入到一维数组中
- 在函数中传递二维数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- 创建 std::string 的二维数组的最佳做法
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 元素在二维数组 c++ 中的出现次数
- 执行 c++ 二维数组
- C++ 中的二维数组初始化为一个值
- 我们可以在 C++ 编程中使用的二维数组的最大大小是多少?
- 遍历二维数组的时间复杂度是多少