zdravim,
da sa v Ccku nejak poslat ako argument do funkcie 2d pole ktore sa az v tejto funkcii dynamicky alokuje s tym ze :pole[x][y], x a y zistujem az vo funkcii a vopred nepoznam tieto hodnoty?
problem vyrieseny, ostava problem s dealokovanim
ak bola funkcia uz raz zavolana a pole alokovane, mal by som ho dealokovat a az potom znova alokovat
mam to takto:
void funkcia(char ***pole, int *alokovanePole)
{
if(*alokovanePole==1)
{
for(i=0;i<7;i++)
{
free((*pole)[i]);
}
free(pole);
}
}
(*pole)=(char**) malloc(6*sizeof(char*));
for(int i = 0; i<7; i++)
{
(*pole)[i]=(char*)malloc(52*sizeof(char));
}
*alokovanePole = 1;
}
ked to pride na: free(pole); spadne to, pokial to zakomentujem tak to nezblbne a znova sa to alokuje, aj sa tam ulozi co potrebujem ale niesom si isty ci sa to povodne pole skutocne dealokovalo?
ak ano tak je dobre, ak nie, tak prosim ako to treba dealokovat?
snazis se uvolnit kopii pointeru co je v pole (z venku je to uz adresa promenne, ve ktere mas teprve ulozen pointer, co sis naalokoval pomoci malocu - proste uz uroven, ktera neni tvoje (kterou si nealokoval))
takze dej free(*pole) a zkus si to promyslet, o co jde
+ u pointeru se casto pouziva specialni hodnota NULL (v realu je to adresa 0) pro detekci zda je neco alokovano ci ne... neni potreba mit jeste "poleAlokovano" (kdyz ho pak nenastavis na 0 po uvolneni a tak)
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku