malloc()

Jaroslav Benkovsky benkovsk na pha.pvt.cz
Pátek Únor 20 12:51:47 CET 1998


Ales Horak wrote:
> kdyz udelam napr:
> 
> char *var;
> ..
> var=malloc(100);
> var=getenv("nejaka_promenna_shellu");
> 
> tak je vse OK, ale kdyz to udelam takhle:
> 
> char var[100];
> ..
> var=getenv("nejaka_promenna_shellu");
> 
> tak mi gcc pri pokusu o preklad na tom radku "var=.." tvrdi:
> "incompatible types in assignment"
> 
Neni se co divit. getenv ti vraci char*, (takze ten malloc akorat
plytva pameti) nicmene ho prirazujes do char*, takze je to ok.
Ve druhem pripade ho ale prirazujes do char[100]. To muze
sice nekdy vystupovat i jako char*, ale tehdy to oznacuje
adresu te promenne (ktera je staticky definovana) a proto mas smulu

Spravnejsi je tedy treba:

char   *var = getenv("pppp");

				Edheldil


Další informace o konferenci Linux