İlan
04 Haz 2026 15 çevrimiçi üye Duyurular
Ana Sayfa FreeBSD
Ana Sayfa Forum FreeBSD - [Çözüm] Heart Oyununda "libthecore" be...
İlan Yan banner placeholder

- [Çözüm] Heart Oyununda "libthecore" bellek leaki nasıl düzeltilebilir?

Kurt37 23.03.2026 00:03 1.4K görüntüleme 27 cevap
Son Mesaj
kaptan041
Üye
Üye
Katılım20 Ara 2025
Konular9
Mesajlar84
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 00:12 #16
Paylaşım için teşekkürler.
Kurt37
Üye
Üye
Katılım01 Mar 2026
Konular11
Mesajlar61
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 00:12 #17
Heart, bir struct'a pointer olan LPHEART typedef'ini kullanır.
heart_new fonksiyonuna bir göz atalım:



Görüldüğü gibi, bu fonksiyon LPHEART için bellek tahsis etmek amacıyla calloc çağrısını kullanıyor. Ancak burada ciddi bir problem var: Bu bellek hiçbir zaman serbest bırakılmıyor!

Peki, bu gerçekten bir hata mı? Belleği temizlemek için bir mekanizma var mı?

Bir dakika… heart_delete adında bir fonksiyonumuz mevcut!
Evet, var ama hiçbir yerde çağrılmamış.

Potansiyel Çözüm​

Manuel olarak heart_delete çağırmak yerine, LPHEART için otomatik bellek yönetimi sağlayan bir smart pointer (akıllı işaretçi) kullanalım.
Bu sayede, bellek doğru zamanda otomatik olarak serbest bırakılacak ve olası bellek sızıntılarını önlemiş olacağız.

libthecore -> heart.h:

c++:
// Öncelikle raw pointeri shared ile değiştirelim
typedef struct std::shared_ptr<HEART> LPHEART;

libthecore -> heart.cpp:

c++:
// heart_new fonksiyonundan bu değişkeni silin:
LPHEART ht;

// Bu satırı:
CREATE(ht, HEART, 1);

// Bu şekilde düzenleyin:
auto ht = std::make_shared<HEART>();

Artık heart_delete fonksiyonuna ihtiyacımız olmadığı için bu fonksiyonu silebilirsiniz.
cost
Üye
Üye
Katılım18 Oca 2026
Konular3
Mesajlar64
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 00:12 #18
paylaşım için tşk.

birde p2p açıgı için bi konu yazar mısın böyle detaylı sekilde çözümü ile birlikte
Kurt37
Üye
Üye
Katılım01 Mar 2026
Konular11
Mesajlar61
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 00:12 #19
paylaşım için tşk.

birde p2p açıgı için bi konu yazar mısın böyle detaylı sekilde çözümü ile birlikte

Teşekkürler. Buradan açığı kapatmak için yardım alabilirsin. Tıkla ve Git
kaptan041
Üye
Üye
Katılım20 Ara 2025
Konular9
Mesajlar84
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 00:12 #20
Paylaşım için teşekkürler.
Kurt37
Üye
Üye
Katılım01 Mar 2026
Konular11
Mesajlar61
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 00:12 #21
Heart, bir struct'a pointer olan LPHEART typedef'ini kullanır.
heart_new fonksiyonuna bir göz atalım:



Görüldüğü gibi, bu fonksiyon LPHEART için bellek tahsis etmek amacıyla calloc çağrısını kullanıyor. Ancak burada ciddi bir problem var: Bu bellek hiçbir zaman serbest bırakılmıyor!

Peki, bu gerçekten bir hata mı? Belleği temizlemek için bir mekanizma var mı?

Bir dakika… heart_delete adında bir fonksiyonumuz mevcut!
Evet, var ama hiçbir yerde çağrılmamış.

Potansiyel Çözüm​

Manuel olarak heart_delete çağırmak yerine, LPHEART için otomatik bellek yönetimi sağlayan bir smart pointer (akıllı işaretçi) kullanalım.
Bu sayede, bellek doğru zamanda otomatik olarak serbest bırakılacak ve olası bellek sızıntılarını önlemiş olacağız.

libthecore -> heart.h:

c++:
// Öncelikle raw pointeri shared ile değiştirelim
typedef struct std::shared_ptr<HEART> LPHEART;

libthecore -> heart.cpp:

c++:
// heart_new fonksiyonundan bu değişkeni silin:
LPHEART ht;

// Bu satırı:
CREATE(ht, HEART, 1);

// Bu şekilde düzenleyin:
auto ht = std::make_shared<HEART>();

Artık heart_delete fonksiyonuna ihtiyacımız olmadığı için bu fonksiyonu silebilirsiniz.
cost
Üye
Üye
Katılım18 Oca 2026
Konular3
Mesajlar64
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
05.05.2026 00:12 #22
paylaşım için tşk.

birde p2p açıgı için bi konu yazar mısın böyle detaylı sekilde çözümü ile birlikte
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
Benzer Konular
8 cevap
2K görüntüleme
FreeBSD 13.4 Sürüm İso Dosyası
gnrelfnz · 02 May 2026
19 cevap
2K görüntüleme
Ağ sorunu Fix
NeziRip_NT · 27 Mar 2026
7 cevap
1.9K görüntüleme
27 cevap
1.9K görüntüleme
İlan Yan banner placeholder