- Mesaj
- 1.025
- Çözümler
- 35
- Beğeni
- 1.077
- Puan
- 1.339
- Ticaret Puanı
- 0
Fix sahibi metin2.dev'den
Fixi aldığım asıl konu:
Sorun:
Heart, bir struct'a pointer olan LPHEART typedef'ini kullanır.
heart_new fonksiyonuna bir göz atalım:
Görüldüğü üzere, bu fonksiyon LPHEART'a bellek ayırmak için calloc çağırır.
Ancak bu operasyon bir sorun yaratır, calloc asla bellekten salınmaz!
Bir dakika... Belleği salmamız için bizim heart_delete adında fonksiyonumuz var...
Ever var, ancak hiçbir yerde kullanılmamış.
Potansiyel çözüm:
heart_delete çağırmak yerine, LPHEART'a bellek ayırmak için otomatik olarak bellekten salınacak bir smart pointer kullanalım.
libthecore -> heart.h:
libthecore -> heart.cpp:
Artık heart_delete fonksiyonuna ihtiyacımız olmadığı için bu fonksiyonu silebilirsiniz.
Linkleri görebilmek için
giriş yap veya kayıt ol.
'dir.Fixi aldığım asıl konu:
Linkleri görebilmek için
giriş yap veya kayıt ol.
Sorun:
Heart, bir struct'a pointer olan LPHEART typedef'ini kullanır.
heart_new fonksiyonuna bir göz atalım:
Görüldüğü üzere, bu fonksiyon LPHEART'a bellek ayırmak için calloc çağırır.
Ancak bu operasyon bir sorun yaratır, calloc asla bellekten salınmaz!
Bir dakika... Belleği salmamız için bizim heart_delete adında fonksiyonumuz var...
Ever var, ancak hiçbir yerde kullanılmamış.
Potansiyel çözüm:
heart_delete çağırmak yerine, LPHEART'a bellek ayırmak için otomatik olarak bellekten salınacak bir smart pointer kullanalım.
libthecore -> heart.h:
C++:
// Öncelikle raw pointeri shared ile değiştirelim
typedef struct std::shared_ptr<HEART> LPHEART;
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.