gpt4 book ai didi

java - N个元素的一维数组是否需要与2D[m][n]相同的内存量,m*n=N

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:43 24 4
gpt4 key购买 nike

这是关于 Java 中内存分配的问题。

假设我有一个整数数组 A[100] 和另一个整数数组 B[10][10]。他们在 Java 中需要相同数量的内存还是不同?如果是后者,有什么区别,它是如何随着 N 增长的?

我在这里只讨论 N 是正数的 2 次方,所以我们在这里讨论方形二维数组及其可能的一维表示。

最佳答案

肯定不会。

在 C/C++ 中,二维数组在“一个 block ”中为二维数组分配所有内存。

在 Java 中,二维数组是“数组的数组”。一维数组是一个chunk分配的,但是一维数组可能是分散的。此外,“外部”数组(二维)也需要堆内存,存储对一维数组的引用。

因此,如果分配一个维度为 m(外部)和 n(内部)的二维数组,Java 将创建一个 m 元素和 mn 元素数组。外部数组仅存储对 m 内部数组的引用。

This page对 Java 中的多维数组进行了很好的解释和可视化。

关于java - N个元素的一维数组是否需要与2D[m][n]相同的内存量,m*n=N,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30958589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com