Bellek alanı teslimi

Asked by egcodes

Semetey kodlara şöyle bi baktım son revizyondan sonra movie_namelist ile dinamik bellek alanını aldıktan sonra free etmemişsin. Programdan çıkmadan önce mutlaka free etmemiz gerekiyor yoksa malum.

Eğer benim gözden kaçırdığım birşey varsa görmezden gel bu soruyu.

Question information

Language:
English Edit question
Status:
Answered
For:
MovieList Manager Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Semetey Coşkun (sem0900) said :
#1

Yok Erdi hayır gözden kaçırdığın bir durum yok... Program sonlanırken teslim etmekte sıkıntı yok. O benim gözümden kaçmış. İlgili bug altında da açıkladım ama ben şunu soruyorsn sandım;

Bir dizini listeledik 500 tane film olsun içerisinde. Daha sonra bir dizin listelesek ve içerisinde 5 film olsa. geri kalan sizeof(char) x 495 x 100 kadarlık bellek alanı ne olacak?

MEsela bu durumda program sonlanırken ilgili alanları sisteme iade edersek geri kalan 495 film için alan sıkıntı oluyor yani iade edilmemiş oluyor.

O nedenle aslında bunun kontrolülü daha yer ayırırken yapmak gerekiyor sanırım.

* Önceden yer ayrılmış mı?

- Ayrılmışa bu dizin için gerekli olmayanları serbest bırak.
- ayrılmamışsa bu dizin için yer ayır (yani sorun olmayan kısım)

* Program sonlanırken son dizin için sisteme iade edilmeyen alanları boşalt...

Kafana takılan ise programın 4000 dosya üzerinde yenilemeyapılınca top komutumda değişiklim olmaması.

Revision history for this message
egcodes (egcodes) said :
#2

bug kısmında açıkladım bi daha yazayım. aldığın alana bir bilgi yerleştirmeyince kullandığı bellekte göstermiyor. ama o bellek alanı o programındır ondan emin olabilirsin :)

Revision history for this message
Semetey Coşkun (sem0900) said :
#3

Evet ev dizinimi açarak yaklaşık 20 - 30 kere yeniledim programı ve durmadan bellek kullanımı arttı. Mutlaka geri vermek gerekiyor ilgili alanı...

Revision history for this message
Semetey Coşkun (sem0900) said :
#4

Son revizyonumda olması gerekiyor gözden kaçan 3000 * sizeof(char) lık bir alan geri verilmemişti. Onu düzeltmiştim. Yani bellek yönetimi ile ilgili olarak beta aşamasında bütün callocları gözden geçirsek iyi olur...

bir de tür ataması yapılmadan kullanılmış calloclar mevcuttu sanırım. Onları da düzeltirsek daha güzel bir kodlama olur.

Ayrıca char türüne dönüştürünce, double türünü dahi tutabilen void'den kurtularak bellek ile ilgili belki bir tasarruf yapmış olabiliriz (emin olmamak ile beraber söyledim son cümleyi).

Can you help with this problem?

Provide an answer of your own, or ask egcodes for more information if necessary.

To post a message you must log in.