C/C++ Leak ayıklamak için tavsiye

Frk4n

Hectopat
Katılım
29 Kasım 2020
Mesajlar
163
Çözümler
2
Merhaba, C dili ile uğraşıyorum, herkesin malumatı olan leaklerden yakınıyorum. Leakleri daha kolay temizlemek için valgrind haricinde tavsiye edebileceğiniz bir yöntem, kütüphane vs. var mı?
 
O halde basit bir öneride bulunayım belki işine yarar, malloc ve free fonksiyonlarını sarmalayan fonksiyonlar yaz, ve bu kendi fonksiyonlarını her kullandığında bir etiketle imzala. Örneğin;

myMalloc(bla bla, "func0001")

myFree(bla bla "func0001")

Bunları da artık static variable ya da bir struct üzerinde tutarsın, program sonunda da print edersin, hangi malloc çağrısında ve nerede bellek serbest bırakılmamış takip edebilirsin.

Tabii bu bir öneri, işin doğrusu projenin iyi dokümante edilmiş olmasıdır.
 
@Frk4n hocam merhaba ben de C dili ile uğraşıyorum da bu leak olayı tam olarak ne oluyor internette biraz araştırdım ve bu yüksek seviye dillerdeki çöp toplama olayı mı oluyor yani bellekteki değişkenlerle ilgili mi?
@bitwise, @Dynamics değerli hocalarım sizler de yardımcı olursanız sevinirim.
 
@Frk4n hocam merhaba ben de C dili ile uğraşıyorum da bu leak olayı tam olarak ne oluyor internette biraz araştırdım ve bu yüksek seviye dillerdeki çöp toplama olayı mı oluyor yani bellekteki değişkenlerle ilgili mi?
@bitwise, @Dynamics değerli hocalarım sizler de yardımcı olursanız sevinirim.

C ile ilgili her türlü kafana takılan soru için CodeVault, bu soru içinde videoları var dilersen izliyebilirsin.
 
@Frk4n hocam merhaba ben de C dili ile uğraşıyorum da bu leak olayı tam olarak ne oluyor internette biraz araştırdım ve bu yüksek seviye dillerdeki çöp toplama olayı mı oluyor yani bellekteki değişkenlerle ilgili mi?
@bitwise, @Dynamics değerli hocalarım sizler de yardımcı olursanız sevinirim.
C de bildiğin üzeri bellek yönetimi kullanıcıya bırakılır. Eğer malloc ile bir bellek allocate edip bunu free ile serbest bırakmazsan bellek sızıntısı dediğimiz olay gerçekleşir. Yüksek seviyeli diller bu işi Garbage Collector adı verilen bir yöntemle kendi çapında çözüyor. C++ da ise kendimiz RAII paradigmasını kullanarak birtakım GC işlerini halledebiliyoruz.
 
@Dynamics yani garbage collectorumuzu kendimiz kontrol ediyorum anladığım kadarıyla ve bildiğiniz gibi değişkenler bellekte tutuluyor functionlarda mı orada tutuluyor.
Programlar diskten okunup belleğe map edilir, yani bir programı çalıştırmak için işletim sistemi bunu belleğe yüklüyor. Program bellek üzerinde kabaca iki bölümden oluşur bunlar stack ve heap'dir. Stack bölümünde fonksiyonlar ve değişkenler tutulur, heap üzerinde ise dinamik bellek tahsisiyle üretilen değişken ve fonksiyonlar tutulur.

örneğin bunlar stack üzerinde tutulur.
int x = 25;
void function(x, y) {

}

bunlar da heap üzerinde tutulur.
struct x {
int x = 25
void function() { bla bla}
}
x * obj = malloc(sizeof(x))
 

Technopat Haberler

Yeni konular

Geri
Yukarı