C 在声明函数外访问二维数组中的结构
我正在尝试访问我创建的结构的返回2d数组。我可以在创建它们的func中访问它们,但在传递时似乎丢失了引用。 我已经用了上千种方法来做这件事,但似乎没有什么不同。 始终与seg故障保持一致 我目前对它的运行情况如下: 一个简单的结构:C 在声明函数外访问二维数组中的结构,c,memory-management,malloc,C,Memory Management,Malloc,我正在尝试访问我创建的结构的返回2d数组。我可以在创建它们的func中访问它们,但在传递时似乎丢失了引用。 我已经用了上千种方法来做这件事,但似乎没有什么不同。 始终与seg故障保持一致 我目前对它的运行情况如下: 一个简单的结构: typedef struct{ int weight; } myStruct_t; 为myStruct创建二维数组的函数。 我当前的尝试是创建一个新变量作为指向“map”的指针,如前两行所示 myStruct_t*** makeGrid(int sizeX
typedef struct{
int weight;
} myStruct_t;
为myStruct创建二维数组的函数。
我当前的尝试是创建一个新变量作为指向“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;
}
输出为SegFault。
令人惊讶的是,我很快就完全放弃了C内存管理,而我似乎无法找回它
任何建议都将是惊人的。该漏洞即将出现
myStruct_t ***mapPtr = ↦
应该是:
return map;
您需要将返回类型更改为双指针
当您返回“&map”时,您将返回变量
map
的地址。当变量map
存储在堆栈上时,您将向无效内存返回一个地址 我返回map并将myStruct\u t**map=myStruct\u t(100100)更改为myStruct\u t*map=myStruct\u t(100100);。仍然是SefFaults
return map;