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