我正在尝试访问我创建的返回的二维结构数组。我可以在创建它们的函数中访问它们,但在我传递它时似乎丢失了引用。我已经厌倦了一千种方法来做到这一点,但似乎并没有什么不同。总是有段错误。
我目前的运行情况如下:
一个简单的结构:
typedef struct{
int weight;
} myStruct_t;
为 myStruct_t 创建二维数组的函数。我目前的尝试是创建一个新变量作为指向“map”的指针,如最后两行所示。
myStruct_t*** makeGrid(int sizeX, int sizeY)
{
int i;
myStruct_t **map = malloc(sizeX * sizeof(*map));
if(map == NULL){
printf("Unable to set memory, Exiting\n");
exit(1);
}else{
for ( i = 0; i < sizeX; i++)
{
map[i] = malloc(sizeY*sizeof(myStruct_t));
if(map[i] == NULL)
{
printf("Unable to set memory, Exiting\n");
exit(1);
}else{
printf("success!\n");
}
}
}
myStruct_t ***mapPtr = ↦
return mapPtr;
}
然后在另一个文件中:
void initSys(){
myStruct_t** map = *myStruct_t(100,100);
map[0][0].weight = 7;
//or i also just tried
//myStruct_t*** map = myStruct_t(100,100);
//(*map)[0][0].weight = 7;
}
输出是 SegFault。令人惊讶的是,我以如此之快的速度完全忘记了 C 内存管理,而且我似乎无法找回它!
任何建议都会很棒。