[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: M.Atif CEYLAN (atifceylan@gmail.com)
Date: Fri 27 Apr 2007 - 21:52:58 EEST


Caglar Akyuz yazmış:
>> 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
>
>
şuan sorunu düzelttim. hani bazen çözüm gözünüzün önündedir ama rutin
işlerinizde bile artık sorunu başka yerlerde ararsınız :D
benzer bi durumla yaklaşık 2 gündür uğraşıyorum ve artık programımı bile
bozdum sorunu bulabilmek için :(
neyse cok tşk ederim.
şimdi ram durumum 0.5 KB ta sabitlendi.

sorun yok (ne yazıkki hiç olmamış :( ).
cok tşk. ederim.

_______________________________________________
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.