c#类动态内存的反初始化

本文关键字:初始化 内存 动态 | 更新日期: 2023-09-27 18:12:28

我正在使用一个在构造期间动态分配数组的类,如下所示:

    class HeightMap
{
    private int width;
    private int height;
    private ulong numPixels;
    private float[,] value;
    public HeightMap(int width, int height)
    {
        if (width <= 0) throw new Exception("Invalid Dimension: Width");
        if (height <= 0) throw new Exception("Invalid Dimension: Height");
        // Make sure there is an uneven width and height (for allowing diamond square algorithm)
        if ((width % 2) == 0) width++;
        if ((height % 2) == 0) height++;
        this.numPixels = (ulong)(width * height);
        this.width = width;
        this.height = height;
        this.value = new float[width, height];
    }

}

我是否需要实现IDisposable以在销毁时释放value数组,或者在对象无效时自动处理?[在构造函数中这种分配方法还有什么问题吗?])

c#类动态内存的反初始化

您正在通过托管代码分配内存。你不用担心。

你不需要使用IDisposable。它们通常与非托管代码一起使用。垃圾收集器会处理你的对象处理。