我创建了一个结构体,将指针指针传入函数,然后调用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 –