这段代码泄漏了内存吗?我需要解放任何东西吗? C ++内存

时间:2012-03-24 18:57:45

标签: c++ memory memory-leaks free

所以我在C ++中编写了一些矩阵类。所以每个矩阵都有一个指向一个名为entries的数组的指针,我不确定我是否正确这样做但是我在子类中重新声明了数组。 (我不是C ++专家)

这个内存需要免费吗?我只是用引用的数组覆盖指针吗?任何帮助将不胜感激。 感谢

class Matrix {
protected:
    float* entries;
public:
    int rows;
    int cols;


    Matrix() {
    }
    ~Matrix() {
    }
};

class Matrix4x4 : public Matrix {
    protected:
        float entry[4][4];
    public:

    /* This will create an empty matrix */
    Matrix4x4() {
        //Define the size of the arrays
        rows = 4;
        cols = 4;
        this->empty();
    }
    ...
};

1 个答案:

答案 0 :(得分:6)

代码没有泄漏内存而且不可能这样做,因为你在代码中的任何地方都没有说newmalloc,也没有以无人看守的方式调用这样做的函数(即在RAII对象之外)。

然而,代码也相当无用且误导(例如Matrix4x4::entry 隐藏残余Matrix::entryrowscolumns似乎有点冗余的变量),这只能通过坐好一本好的C ++书几个小时来解决。

*)或​​者@Nicol Bolas帮助指出,make_shared和丢失的循环引用