创建一个15维数组时会发生什么
What happens when you create a 15-dimensional array?
假设我有以下内容:
int a[100][100][100][100][100][100][100][100][100][100][100][100][100][100][100]
我创建了一个循环,给它分配一些随机值,并制作了一个也会输出它的循环
我的C++书中说,数组只给第一个数组赋值,只为其余的数组保留空间。这是怎么回事?会发生什么?计算机会瞬间崩溃,还是最终崩溃,或者根本不会崩溃?你的电脑内存会被永久擦除吗?
注意:这仅用于教育目的。我只想了解
多维数组的基本原理,仅此而已。
在C和C++中,数组是连续的内存块。这一点很重要,因为这意味着,只要知道数组中第一个元素的位置,就可以通过提供偏移量立即跳转到您想要的数组中的任何元素。这就是为什么您可以使用array[4]
之类的命令对数组进行索引。
在这个问题的上下文中,这一点的重要推论是,所有的内存都必须在数组声明时分配。对于几乎所有的正常需求来说,这并不是一个大问题,但当你使用多维数组时,所需的空间是维度数量的指数。因此,您所要求的数组是一个需要sizeof(int)*100^15
字节的数组。这是3637978807091713000 TB。程序在试图分配内存时肯定会崩溃。
相关文章:
- 通过JNI传递数据数组的最快方法是什么
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 当 std::move 与 C 样式数组或不移动对象时会发生什么
- 当该数组的索引中没有元素时,指针指向什么?
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 从字符数组的元素中减去'a'是什么意思
- 这种用于查找连续子数组中最大和的递归算法有什么优势吗?
- 字符数组前面的加号是什么意思?
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- 在C++中,建议通过数组循环的方式是什么?
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- C++数组中的初始值设定项是什么?
- 如果我在字符数组上使用 close() 会发生什么?
- 指向数组基址的指针而不是指向第一个元素的指针有什么优点?
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 初始化不是整数的巨大常量多维数组的最佳方法是什么?
- 这是什么数组声明
- 什么数组结构在c#中有,而在C/ c++ /Java中没有