[Linux-programlama] Re: C malloc free (kafama takılan bir nokta

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Caglar Akyuz (caglar@bilkon-kontrol.com.tr)
Date: Fri 27 Apr 2007 - 20:50:41 EEST


>
> tamam düzelteyim ve biraz daha açayım,
> char *deneme(char *a)
> {
> char *b = (char *)malloc(20);
> int i;
>
> for(i = 0;i<strlen(a);i++)
> b[i] = a[i];
>
> printf("b :%p\t",b);
>
> return b;
> }
>
> bir önceki örnek ölyesine idi,b=a olmıyacak elbetteki.
> ama benim asıl sorunum deneme fonksiyonunu ben cok sık cağırıyorum ve
> çağırdığım fonksyionlar ayrı ayrı. benim programım çalışmağa başladığı
> zaman devamlı bir ram artışı söz konusu oluyor.
> yerel değişkenleri veya aynı fonksiyon içindeki dinamik alanları
> boşaltınca sorun yok ama bir fonksiyondan bir diğerini çağırıp
> çağırdığım fonksiyondaki malloc neticesi heapten ayrılan alan devamlı
> olarak artıyor ve belli bir süre sonra allocate edemiyor. yani kısaca
> bir fonksiyondan ayırdığım dinamik belleğin
> başka fonksiyondan free edilmesi.
> iyi çalışmalar...

Anladım. Ama bir önceki örnekte iki sorun vardı.

1) deneme fonksiyonu içindeki belleği ayırdıktan sonraki pointer'ın
kaybedilmesi(ki bu sorun değil anladığım kadarıyla çünkü o örnek
öylesine olduğu için gerçekte böyle bir sorun yok)
2) Aynı string için iki kere malloc çağrılması ki bunun düzelip
düzelmediğine yönelik birşey söyleyemem bu son örneğe bakarak.

Bence sorun 2. noktada. Çünkü şu an ki örnekte verdiğiniz "b" pointerını
 programın her hangi bir yerinde işiniz bitince free ettiğiniz takdirde
ram de bir artış olmaması lazım.

Belki çalışan tüm koda bakarak daha çok şey söylenebilir.

Saygılarımla
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.