创建一个15维数组时会发生什么

What happens when you create a 15-dimensional array?

本文关键字:什么 数组 15维 一个 创建      更新时间:2023-10-16

假设我有以下内容:

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。程序在试图分配内存时肯定会崩溃。