- Katılım
- 22 Ara 2011
- Konular
- 49
- Mesajlar
- 245
- Online süresi
- 6g 54289s
- Reaksiyon Skoru
- 186
- Altın Konu
- 2
- Başarım Puanı
- 138
- TM Yaşı
- 14 Yıl 4 Ay 2 Gün
- MmoLira
- 138
- DevLira
- 6
Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!
"İSTEK ÜZERİNE HAZIRLANDI"
Selamlar arkadaşlar,
Bu konuda özellikle client source geliştirenler için:
Memory Leak (hafıza sızıntısı) tespiti
Valgrind kullanımı
RAM optimizasyon teknikleri
Modern C++ doğru kullanımı
detaylı ve güncel şekilde anlatılmıştır.
Memory Leak Nedir?
Memory Leak, programın ayırdığı belleği (malloc/new) geri bırakmaması durumudur.
Belirtiler:
RAM kullanımının sürekli artması
FPS düşüşü
Uzun süre sonra crash
Stabilite problemleri
Valgrind Hakkında Önemli Not
Valgrind Linux ortamında native çalışır, Windows üzerinde doğrudan desteklenmez.
✔ Alternatifler:
WSL (Windows Subsystem for Linux)
Virtual Machine (Ubuntu vb.)
Dr.Memory
Valgrind Kurulumu
Valgrind Kullanımı
Detaylı analiz:
Çıktı Okuma
definitely lost → kesin leak
indirectly lost → bağlı leak
possibly lost → şüpheli
still reachable → kritik değil
Yaygın Hatalar ve Doğruları
1. Raw Pointer Kullanımı (ÖNERİLMEZ)
Eski kullanım:
✔ Modern C++ çözüm:
2. DELETE Kullanımı
Gereksiz kontrol:
✔ Doğru kullanım:
3. malloc / free
4. String Optimizasyonu
Verimsiz:
✔ Optimize:
RAM Optimizasyon Teknikleri
Smart Pointer Kullan
unique_ptr / shared_ptr tercih et
Object Pool Kullan
Sürekli allocation yapma
reuse sistemi kur
Asset Yönetimi
Lazy loading
Cache sistemi
Kullanılmayanları temizle
Gereksiz Allocation’dan Kaçın
Valgrind Hataları
Yavaş Çalışma
✔ Normal (10-20x)
Invalid Read / Write
Segmentation Fault
Null pointer
Free sonrası erişim
Debug ile Kullanım
Tavsiyeler
✔ Modern C++ kullan
✔ Raw pointer’dan kaçın
✔ Uzun süreli test yap
✔ Leak kontrolünü alışkanlık haline getir
Sonuç
Daha düşük RAM kullanımı
Daha stabil client
Daha az crash
Daha iyi performans
Valgrind Kullanırken Alınabilecek Hatalar
Program Çok Yavaş
✔ Normal (10-20x yavaşlatır)
False Positive Leak
Invalid Read / Write
Segmentation Fault
Debug + Valgrind Kombosu
Bonus: SAFE_DELETE Macro
EDIT
Gelen geri bildirimler doğrultusunda modern C++ kullanımı ve bazı teknik detaylar güncellenmiştir. Katkı sağlayan herkese teşekkürler.
---
İstersen bir sonraki konu olarak:
Client FPS Boost + Render Optimizasyonu (Advanced)
FiveM / MMO Script Memory Yönetimi (Deep Level)
Aynı kalitede paylaşabilirim.
--------------------------------------------------------------------------------
İyi formlar şimdiden teşekkürler işine yarayan arkadaşlar bir beğeni ref fazla görmezse sevinirim.
Selamlar arkadaşlar,
Bu konuda özellikle client source geliştirenler için:
Memory Leak (hafıza sızıntısı) tespiti
Valgrind kullanımı
RAM optimizasyon teknikleri
Modern C++ doğru kullanımı
detaylı ve güncel şekilde anlatılmıştır.
Memory Leak Nedir?Memory Leak, programın ayırdığı belleği (malloc/new) geri bırakmaması durumudur.
Belirtiler:RAM kullanımının sürekli artması
FPS düşüşü
Uzun süre sonra crash
Stabilite problemleri
Valgrind Hakkında Önemli NotValgrind Linux ortamında native çalışır, Windows üzerinde doğrudan desteklenmez.
✔ Alternatifler:
WSL (Windows Subsystem for Linux)
Virtual Machine (Ubuntu vb.)
Dr.Memory
Valgrind Kurulumu
Kod:
sudo apt update sudo apt install valgrind
Valgrind Kullanımı
Kod:
g++ -g client.cpp -o client valgrind --leak-check=full --show-leak-kinds=all ./client
Kod:
valgrind --tool=memcheck --track-origins=yes --leak-check=full ./client
Çıktı Okuma
Kod:
==1234== 64 bytes in 1 blocks are definitely lost
indirectly lost → bağlı leak
possibly lost → şüpheli
still reachable → kritik değil
Yaygın Hatalar ve Doğruları
1. Raw Pointer Kullanımı (ÖNERİLMEZ)
Eski kullanım:
Kod:
std::vector<int*> list; list.push_back(new int(5));
for(auto ptr : list) delete ptr;
Kod:
#include #include
std::vector<std::unique_ptr> list; list.push_back(std::make_unique(5));
2. DELETE Kullanımı
Gereksiz kontrol:
Kod:
if(ptr != nullptr) delete ptr;
Kod:
delete ptr; ptr = nullptr;
3. malloc / free
Kod:
char* buffer = (char*)malloc(256); free(buffer);
4. String Optimizasyonu
Verimsiz:
Kod:
std::string s = "test"; s = s + "abc";
Kod:
std::string s = "test"; s.reserve(100); s += "abc";
RAM Optimizasyon Teknikleri
Smart Pointer Kullanunique_ptr / shared_ptr tercih et
Object Pool KullanSürekli allocation yapma
reuse sistemi kur
Asset YönetimiLazy loading
Cache sistemi
Kullanılmayanları temizle
Gereksiz Allocation’dan Kaçın
Kod:
for(int i = 0; i < 10000; i++) new Object(); // kaçınılmalı
Valgrind Hataları
Yavaş Çalışma✔ Normal (10-20x)
Invalid Read / Write
Kod:
int arr[5]; arr[10] = 1;
Segmentation FaultNull pointer
Free sonrası erişim
Debug ile Kullanım
Kod:
g++ -g client.cpp -o client valgrind ./client
Tavsiyeler✔ Modern C++ kullan
✔ Raw pointer’dan kaçın
✔ Uzun süreli test yap
✔ Leak kontrolünü alışkanlık haline getir
Sonuç
Daha düşük RAM kullanımı
Daha stabil client
Daha az crash
Daha iyi performans
Valgrind Kullanırken Alınabilecek Hatalar
Program Çok Yavaş✔ Normal (10-20x yavaşlatır)
False Positive Leak
Kod:
--suppressions=valgrind.supp
Invalid Read / Write
Kod:
int arr[5]; arr[10] = 1; // ❌
Segmentation Fault
Kod:
if(ptr != nullptr) delete ptr;
Debug + Valgrind Kombosu
Kod:
g++ -g client.cpp -o client valgrind ./client
Bonus: SAFE_DELETE Macro
Kod:
#ifdef DEBUG #define SAFE_DELETE(p) { if(p) { delete (p); (p)=nullptr; } } #else #define SAFE_DELETE(p) delete (p) #endif
EDITGelen geri bildirimler doğrultusunda modern C++ kullanımı ve bazı teknik detaylar güncellenmiştir. Katkı sağlayan herkese teşekkürler.
---
İstersen bir sonraki konu olarak:
Client FPS Boost + Render Optimizasyonu (Advanced)
FiveM / MMO Script Memory Yönetimi (Deep Level)
Aynı kalitede paylaşabilirim.--------------------------------------------------------------------------------
İyi formlar şimdiden teşekkürler işine yarayan arkadaşlar bir beğeni ref fazla görmezse sevinirim.
Son düzenleme:
- Katılım
- 1 Tem 2019
- Konular
- 1,953
- Mesajlar
- 5,201
- Online süresi
- 1ay 8g
- Reaksiyon Skoru
- 3,987
- Altın Konu
- 140
- Başarım Puanı
- 339
- TM Yaşı
- 6 Yıl 9 Ay 24 Gün
- MmoLira
- 39,465
- DevLira
- 150
PAYLAŞIM İÇİN TEŞEKKÜRLER,ELİNE SAĞLIK.
- Katılım
- 22 Ara 2011
- Konular
- 49
- Mesajlar
- 245
- Online süresi
- 6g 54289s
- Reaksiyon Skoru
- 186
- Altın Konu
- 2
- Başarım Puanı
- 138
- TM Yaşı
- 14 Yıl 4 Ay 2 Gün
- MmoLira
- 138
- DevLira
- 6
- Katılım
- 21 Kas 2018
- Konular
- 79
- Mesajlar
- 1,605
- Online süresi
- 3ay 16g
- Reaksiyon Skoru
- 241
- Altın Konu
- 0
- Başarım Puanı
- 141
- TM Yaşı
- 7 Yıl 5 Ay
- MmoLira
- 9,438
- DevLira
- 15
Valgrind Linux ortamında native çalışır, Windows uygulamalarında doğrudan desteklenmez. Beklenen performans olmayacak deneyenlerde.
Ek olarak.
for(auto ptr : list) delete ptr;
bu kısım eksik bunun yerine:
std::vector<std::unique_ptr<int>> list;
list.push_back(std::make_unique<int>(5));
-------------------------------------------------
if(ptr != nullptr) delete ptr;
Bu kısım yanlış doğrusu:
delete ptr;
ptr = nullptr;
-----------------------------------------------
std::string s = "test";
s = s + "abc";
Bu kısım yanlış doğrusu:
s.reserve(100);
s += "abc";
----------------------------------------------
g++ -g client.cpp -o client valgrind ./client
Bu kısım yanlış doğrusu:
g++ -g client.cpp -o client
valgrind ./client
Ek olarak.
for(auto ptr : list) delete ptr;
bu kısım eksik bunun yerine:
std::vector<std::unique_ptr<int>> list;
list.push_back(std::make_unique<int>(5));
-------------------------------------------------
if(ptr != nullptr) delete ptr;
Bu kısım yanlış doğrusu:
delete ptr;
ptr = nullptr;
-----------------------------------------------
std::string s = "test";
s = s + "abc";
Bu kısım yanlış doğrusu:
s.reserve(100);
s += "abc";
----------------------------------------------
g++ -g client.cpp -o client valgrind ./client
Bu kısım yanlış doğrusu:
g++ -g client.cpp -o client
valgrind ./client
Son düzenleme:
- Katılım
- 22 Ara 2011
- Konular
- 49
- Mesajlar
- 245
- Online süresi
- 6g 54289s
- Reaksiyon Skoru
- 186
- Altın Konu
- 2
- Başarım Puanı
- 138
- TM Yaşı
- 14 Yıl 4 Ay 2 Gün
- MmoLira
- 138
- DevLira
- 6
Gelen geri bildirimler doğrultusunda bazı teknik kısımlar güncellenmiştir. Katkı sağlayan herkese teşekkürler.Valgrind Linux ortamında native çalışır, Windows uygulamalarında doğrudan desteklenmez. Beklenen performans olmayacak deneyenlerde.
Ek olarak.
for(auto ptr : list) delete ptr;
bu kısım eksik bunun yerine:
std::vector<std::unique_ptr<int>> list;
list.push_back(std::make_unique<int>(5));
-------------------------------------------------
if(ptr != nullptr) delete ptr;
Bu kısım yanlış doğrusu:
delete ptr;
ptr = nullptr;
-----------------------------------------------
std::string s = "test";
s = s + "abc";
Bu kısım yanlış doğrusu:
s.reserve(100);
s += "abc";
----------------------------------------------
g++ -g client.cpp -o client valgrind ./client
Bu kısım yanlış doğrusu:
g++ -g client.cpp -o client
valgrind ./client
Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)
Benzer konular
- Cevaplar
- 17
- Görüntüleme
- 1K







