我有一个班级CircularBuffer
,其中有一个方法CreateBuffer
。该类做了很多事情,但偶尔我需要更改类中使用的数组的大小。我不再需要这些数据了。这是班级:
static class CircularBuffer
{
static Array[,] buffer;
static int columns, rows;
public static void CreateBuffer(int columns, int rows)
{
buffer = new Array[rows,columns];
}
//other methods that use the buffer
}
现在缓冲区的大小最多为100 x 2048浮点数。这会导致任何内存问题,还是会自动替换而没有问题? 感谢
答案 0 :(得分:2)
从技术上讲,你不会重新创造任何东西。您只是创建一个新数组并覆盖变量的值(可以说是它所引用的数组的地址)。
因此,重要的是要区分你真正取代的东西;你没有替换数组,只是对数组的引用。
有问题吗?没有。根据您的代码,旧数组将不再可访问,因此有资格由GC收集。如果集合发生在GC上,但你不应该担心它。