返された構造体の2次元配列にアクセスしようとしています。それらが作成された関数でそれらにアクセスできますが、それを渡すと参照が失われるようです。私はそれを行うための千の方法に疲れましたが、それは違いを生まないようです。常にセグメンテーション違反が発生します。
それでの私の現在の実行は次のようになります:
単純な構造体:
typedef struct{
int weight;
} myStruct_t;
myStruct_tの2次元配列を作成する関数。それを引き出すための私の現在の試みは、最後の2行に見られるように、「マップ」へのポインターとして機能する新しい変数を作成することです。
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メモリ管理を完全に忘れてしまい、元に戻せないようです。
どんな提案も素晴らしいでしょう。