代码之家  ›  专栏  ›  技术社区  ›  choxsword

如何删除这种二维数组?

  •  0
  • choxsword  · 技术社区  · 7 年前
        #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 回复  |  直到 7 年前
        1
  •  1
  •   Bathsheba    7 年前

    rule 是指向类型的指针数组 int[7] .

    前者是用 new[] .

    因此你需要使用 delete[] rule; 释放记忆。