2d pole malloc vo funkcii – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

2d pole malloc vo funkcii – C / C++ – Fórum – Programujte.com2d pole malloc vo funkcii – C / C++ – Fórum – Programujte.com

 

wrany0
Newbie
5. 4. 2014   #1
-
0
-

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?

Nahlásit jako SPAM
IP: 95.105.131.–
wrany0
Newbie
6. 4. 2014   #2
-
0
-

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?

Nahlásit jako SPAM
IP: 95.105.131.–
KIIV
~ Moderátor
+43
God of flame
6. 4. 2014   #3
-
+1
-
Zajímavé

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

Nahlásit jako SPAM
IP: 94.113.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
wrany0
Newbie
6. 4. 2014   #4
-
0
-

#3 KIIV
Dakujem za pomoc aj vysvetlenie :)

Nahlásit jako SPAM
IP: 95.105.131.–
KIIV
~ Moderátor
+43
God of flame
6. 4. 2014   #5
-
0
-

+ 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)

Nahlásit jako SPAM
IP: 94.113.94.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 117 hostů

Podobná vlákna

2D pole vo funkcii — založil Anonym

Call malloc — založil BigBear

Malloc retazec — založil Carmagedon

Alokacia malloc - pad — založil Ludo

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý