释放结构体成员内存的时候失败了,请问有没有大佬指正一下?

struct IMPERIAL{
    int **my_map;//记录节点关系的矩阵
    int numVar;//节点数
    //函数的接口
    void(*initialMap)(int ***, int );//初始化矩阵
    void(*clearMap)(int ***, int );//释放内存
    void(*calTime)(struct IMPERIAL const);//求解过程
};

void myClearMap(int ***my_map, int n)//释放内存
{
    for(int i=0;i<=n;i++) free(*(*my_map + i));
    free(*my_map);
}

    struct IMPERIAL item;
    item.clearMap=myClearMap;
    item.initialMap=myInitialMap;

 item.clearMap(&item.my_map,item.numVar+1);//free memory

最会根本没有成功释放内存,没有报错,可正常运行结束。

https://blog.csdn.net/gschen_cn/article/details/79823664

因为你传入的变量类型没指定每一维大小,所以程序不知道在怎么释放。

void myClearMap(int my_map[2][3][4], int n)
//或者
void myClearMap(int my_map[][3][4], int n)

应该这样定义,具体的维数换成你代码里的。第一维可以省略,因为只要知道后两维的大小第一维加一的步长就能计算。