我創建了一個結構體,將指針指針傳入函數,然後調用malloc()
。這一切都很好。 但是,如果我嘗試訪問內存,該程序只會凍結。如果我調用另一個函數並更改訪問內存,那麼一切正常。修改結構體指針的指針
void test(TFeld *Feld, TEinstellung E)
{
int i;
for (i=0;i<E.Groesse_X*E.Groesse_Y;i++)
{
Feld[i].Schiff_Vorhanden = false;
Feld[i].Schiff_Versunken = false;
Feld[i].Ueberprueft = false;
}
}
void initField (TEinstellung E, TFeld **Feld)
{
int i;
*Feld = (TFeld*)malloc(E.Groesse_X*E.Groesse_Y*sizeof(TFeld));
test(*Feld,E);
/* for (i=0;i<E.Groesse_X*E.Groesse_Y;i++)
{
Feld[i]->Schiff_Versunken = (bool*)false;
// (*Feld[i]).Schiff_Versunken = false;
//Feld[i]->Ueberprueft = false;
} */
}
與TFeld的definiton:
typedef struct TFeld
{
bool Schiff_Vorhanden = false;
bool Ueberprueft = false;
bool Schiff_Versunken = false;
} TFeld;
我註釋掉的部分,而使用測試功能工作剛剛墜毀的程序。
有人可以請解釋我的行爲。
你在哪裏寫過'Feld [i] - >'你可能意思是'(* Feld)[i]。' – immibis
在你的'struct' typedef中,你可以省去'TFeld你第一次擁有它。如在'typedef struct {...} TFeld;' –
bool指針?! :D –