如何删除这种二维数组?

时间:2018-08-13 13:42:53

标签: c++ delete-operator

    #define NB -3
    #define NM -2
    #define NS -1
    #define ZO 0
    #define PS 1
    #define PM 2
    #define PB 3


 int (*rule)[7] =new int[7][7]{{NB,NB,NM,NM,NS,ZO,ZO},
                              {NB,NB,NM,NS,NS,ZO,PS},
                              {NM,NM,NM,NS,ZO,PS,PS},
                              {NM,NM,NS,ZO,PS,PM,PM},
                              {NS,NS,ZO,PS,PS,PM,PM},
                              {NS,ZO,PS,PM,PM,PM,PB},
                              {ZO,ZO,PM,PM,PM,PB,PB}};

我应该使用以下方法吗?

for(int i=0;i<7;++i)
{
   delete[] rule++;
}

或者如果我使用delete[] rule,似乎很奇怪,因为基础对象是arrray数组,而不是rule类型的指针数组。

1 个答案:

答案 0 :(得分:1)

rule是一个指向int[7]类型的指针的数组。

前者用new[]声明。

因此,您需要使用delete[] rule;释放内存。