这个代码是否正在泄漏内存?我需要免费的东西吗?C++;记忆 我在C++中写了一些矩阵类。所以每个矩阵都有一个指向数组entries的指针,我不确定我是否做对了,但是我在子类中重新定义了数组。(我不是C++方面的专家)

这个代码是否正在泄漏内存?我需要免费的东西吗?C++;记忆 我在C++中写了一些矩阵类。所以每个矩阵都有一个指向数组entries的指针,我不确定我是否做对了,但是我在子类中重新定义了数组。(我不是C++方面的专家),c++,memory,memory-leaks,free,C++,Memory,Memory Leaks,Free,这个内存需要释放吗?我只是用引用的数组覆盖指针吗?任何帮助都将不胜感激。 谢谢 代码没有泄漏内存,也不可能这样做,因为您在代码*中的任何地方都不会说new或malloc,也不会调用以不受保护的方式执行此操作的函数(即RAII对象外部) 但是,代码也是相当无用和误导的(例如,代码> Matrix x4x::条目隐藏了代码>::条目,和行和列似乎是多余的变量,只有用好的C++书坐几个小时才能解决。 *)或者,正如@Nicol Bolas有帮助地指出的那样,make_shared与丢失的循环引用一起代

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


代码没有泄漏内存,也不可能这样做,因为您在代码*中的任何地方都不会说
new
malloc
,也不会调用以不受保护的方式执行此操作的函数(即RAII对象外部)

<>但是,代码也是相当无用和误导的(例如,代码> Matrix x4x::条目<代码>隐藏了<>代码>::条目,和<代码>行和似乎是多余的变量,只有用好的C++书坐几个小时才能解决。
*)或者,正如@Nicol Bolas有帮助地指出的那样,
make_shared
与丢失的循环引用一起代码没有泄漏内存,也不可能这样做,因为您在代码中的任何地方都不会说
new
malloc
,也不会调用不加保护的函数(即外部RAII对象)

<>但是,代码也是相当无用和误导的(例如,代码> Matrix x4x::条目<代码>隐藏了<>代码>::条目,和<代码>行和似乎是多余的变量,只有用好的C++书坐几个小时才能解决。
*)或者,正如@Nicol Bolas有帮助地指出的那样,
make_shared
与丢失的循环引用一起

,这就是我不喜欢
strdup
的原因,它使你的第一句话是错误的。“但是+1:”@赛斯卡内基:C或C++中没有“<代码>代码/代码>”,但我当然应该说“你从来没有说过或调用任何代码,比如说代码<新<代码> >或者代码> MaloC/<代码>。”Caveat Usor。@丹尼伯奇:我知道你在做什么。我只是注意到你很可能做得不对:-)“代码没有泄漏内存,也不可能这样做,因为你从来不会在任何地方说new或malloc。”你可以使用
shared\u ptr
泄漏内存。你所需要的只是一个循环引用。我在做加法或乘法之类的事情时使用行和列来比较,可能还有另一种方法我不知道。那么,我应该删除基类中指向entires的指针吗?我试图使用Matrix类重载,这样我可以循环并添加任意大小矩阵的行/列,但我认为我只是在制造混乱,这就是我不喜欢strdup的原因,这会使你的第一句话出错。“但是+1:”@赛斯卡内基:C或C++中没有“<代码>代码/代码>”,但我当然应该说“你从来没有说过或调用任何代码,比如说代码<新<代码> >或者代码> MaloC/<代码>。”Caveat Usor。@丹尼伯奇:我知道你在做什么。我只是注意到你很可能做得不对:-)“代码没有泄漏内存,也不可能这样做,因为你从来不会在任何地方说new或malloc。”你可以使用
shared\u ptr
泄漏内存。你所需要的只是一个循环引用。我在做加法或乘法之类的事情时使用行和列来比较,可能还有另一种方法我不知道。那么,我应该删除基类中指向entires的指针吗?我试图使用Matrix类重载,这样我就可以循环并添加任意大小矩阵的行/列,但我想我只是在搞乱为什么要将行和列定义为float?(C++无法处理分形维数的矩阵(;-)谢谢,我甚至没有注意到我疯狂地键入了这个。你为什么将行和列定义为float?(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();
    }
    ...
};