c语言,每次执行到给结构体内的二维数组成员变量赋值时程序就崩溃了,有大佬知道原因吗

结构体的声明

struct IMPERIAL{
    int **my_map;
    int numVar;
    void(*initialMap)(int **, int );
    void(*clearMap)(int **, int );
};
void myInitialMap(int **my_map, int n)
{
    my_map = (int **)malloc(sizeof(int*) * n);
    for(int i=0;i<n;++i){
        my_map[i] = (int*)malloc(sizeof(int) * n);
    }

    int count=0;
}
void myClearMap(int **my_map, int n)
{
    for(int i=0;i<=n;i++) free(*(my_map + i));
    free(my_map);
}

初始化

int node;
    char myInput[10];
    for(int j=2;j<=item.numVar;j++)  
        for(int i=1;i<j;i++){
            scanf("%s",myInput);
            int b;
            if(myInput[0]!='x')
            {
                sscanf(myInput,"%d",&node);
                item.my_map[j][i]=node;
                item.my_map[i][j]=item.my_map[j][i];
            }
        }

每次一到 item.my_map[j][i]=node; 程序就崩溃了,不知道什么原因啊

编译过了,没有报错,执行到这一步程序就会直接卡住

void myInitialMap(int **my_map, int n)
{
    my_map = (int **)malloc(sizeof(int*) * n); // 这句对传入的参数my_map没有影响
    for(int i=0;i<n;++i){
        my_map[i] = (int*)malloc(sizeof(int) * n);
    }

    int count=0;
}

这一段代码有问题,应该改为

void myInitialMap(int ***my_map, int n) // 调用的时候使用&item.my_map
{
    *my_map = (int **)malloc(sizeof(int*) * n);
    for(int i=0;i<n;++i){
        (*my_map)[i] = (int*)malloc(sizeof(int) * n);
    }

    int count=0;
}

二级指针操作:

 item.my_map[j][i]=node;
 改成这种样式:
 *((int *)a +i*n +j )//n表示第二维数组长度,即列宽