From: M.Atif CEYLAN (atifceylan@gmail.com)
Date: Thu 26 Apr 2007 - 13:54:46 EEST
Ustun ERGENOGLU yazmış:
> malloc ile aldığınız bellek alanları fonksiyondan çıktığınızda
> boşalmaz, mutlaka free ile bırakmanız gerekir. sadece fonksiyonda
> kullanılacak yerel değişkenler fonksiyona girince stack'den yer alıp
> kullanır, çıkınca da bırakılır, ama malloc stack'den değil heap'den
> yer alır ve program çalıştığı sürece kalır.
>
> 26.04.2007 tarihinde M.Atif CEYLAN <atifceylan@gmail.com> yazmış:
>
>> herkese merhaba,
>> arkadaşlar C de yazdığım bir programda cok yoğun string işlemleri
>> kullanıyorum (10 larca mb lık dosyaları okuyup parse etmeye calışıyorum
>> ve bu işlemi periyodik olarak devamlı olarak yapıyorum). ancak
>> stringleri küçük parçalarda alıp her seferinde fonksiyona sokuyorum
>> mesela :
>>
>> while (sart)
>> islemyap(str)//burada en fazla 2 KB datam var
>>
>> islemyap(char *str)
>> char *a = (char*)malloc(256);
>> char *b = (char*)malloc(25);
>>
>> a = str_temizle(sub_str(str,3,255));
>> b = str_temizle(sub_str(str,258,24));
>> ........................
>>
>> şeklinde devam eden islemyap benzeri 4 fonksiyonum var.
>> sorunum şu. fonksiyon sona erdiğinde ayrılan bellek alanları zaten
>> boşalır düşüncesi ile değişkenlerimi free etmiyorum.
>> ancak top cıktısı bir facia gibi adeta. her seferinde yükselen bir
>> bellek var önümde. bu durum, çekirdeğin ihtiyat için benim programın
>> ayırdığı bellek alanlarını tutması ile alakalı olabilir mi? yoksa
>> fonksiyonların sonunda free etsem mi? ama o kadar fazla değişkenim var
>> ki gözüm yemiyor daha kötüsü bazıları şartlara göre set edildiği için
>> free işlemlerinde de kontrole ihtiyac duyacağım.fikirlerinizi bekliyorum
>> iyi çalışmalar...
>> M.Atıf CEYLAN
>>
>> _______________________________________________
>> 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
>
>
yerel değişken olarak tanımladım değişkenlerimi ve sorun kalmadı. şuan
sabit bir ram kullanımı var.
tşk ederim.
iyi çalışmalar....
M.Atıf CEYLAN
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama