gpt4 book ai didi

java - 如何释放二维数组中的内存

转载 作者:行者123 更新时间:2023-12-01 06:45:06 26 4
gpt4 key购买 nike

我有一个很长的代码。但逻辑如下:我有一个 Java 中的二维数组。因此,我在位置内有值: [0][0], [0][1], [0][2] 和值在:[1][0], [ 1][1],[1][2]。至此,我做了一些比较,从第一行开始就完成了。我想释放以下位置的内存:[0][0]、[0][1]、[0][2] 并移动到下一个位置[2][0] 、[2][1]、[2][2]

我怎样才能做这样的事情。我无法覆盖 [0][0]、[0][1]、[0][2],我的代码已编程为移动到下一行,即 [2] [0], [2][1], [2][2] 但我面临内存限制,我想从第一行释放内存 [0][0], [0][ 1],[0][2],因为我不再需要它了。我只需要当前行和前一行进行比较。因此,我想在完成比较时删除第一行。

更新:我尝试将 NULL 分配给未使用的数组位置,如下所示:

for (int f = 0; f <= capacity; f++)
{
table[f][i-2] = (Integer) null;
}

我的数组是 int 类型,我只需要最后两列。一旦我再向前移动一个位置,第一个就不再需要了。当我应用上面的代码来分配NULL时,我得到:

java.lang.NullPointerException

最佳答案

null设置为行中的每个引用

for (int i = 0; i < arr.length; i++)
{
arr[0][i] = null;
}

arr 应该是引用数组,而不是原始类型

编辑
对于原始类型(例如 int),您可以使用包装类(例如 java.lang.Integer 而不是 int : Integer[ ][] 而不是 int[][])

编辑2
与上一个循环等效的是:

arr[0] = new Integer[arr.length];

数组new Integer[arr.length]包含null

关于java - 如何释放二维数组中的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17398483/

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