From: Deniz Koçak (lenduha@gmail.com)
Date: Thu 26 Apr 2007 - 15:01:47 EEST
> şöyle bir foksiyonum var.
>
>
> char *fonksiyon(char *str)
> {
> char *Cikacak = (char *malloc(strlen(str)+1);
>
> int i=0,j=0;
>
> for(i=0;i<strlen(str);i++)
> if (sart)
> Cikacak[j++] = str[i];
>
> return Cikacak;
> }
>
> mallocladığım alanı nasıl free edebilirim ve tuttuğu alanı free
> edebilmek için bu foksiyonu daha mantıklı nasıl yazabilirim.
>
free fonksiyonunu malloc() ile ayırdığınız alanla bir işiniz
kalmadığında kullanabilirsiniz. Eğer halen kullanan bir değişken vs. varsa
bu hataya sebep olacaktır.
http://www.opengroup.org/onlinepubs/009695399/functions/free.html
<http://www.opengroup.org/onlinepubs/009695399/functions/free.html>
adresinde free fonksiyonu için referans mevcut. free fonksiyonuna parametre
olarak malloc() ile ayırdığınız alanı gösteren işaretçiyi (pointer) vermeniz
yeterli. char *Cikacak = (char *malloc(strlen(str)+1); kodunda Cikacak
işaretçisi oluyor. malloc/free yaparken aklıma gelen ufak bir ayrıntı...
malloc ile ayırdığınız alanı gösteren işaretçiyi başka bir değişkeni vs.
göstermek için kullanmamaya özen gösterin. Bu malloc tarafından ayrılan
hafıza bloğunun bir nevi yerini kaybetmenize sebep olabilir ve dolayısıyla
orası atıl durumda kalır. Belki gösterilen alanı başka bir işaretçiye
kaydedebilir vs. gibi deÄŸiÅŸik ÅŸeyler yapabilirsiniz size ve C'nin
sınırlarına kalmış. Kolay gelsin.
iyi Çalışmalar...
Size de iyi çalışmalar. :)
_____________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama