- Katılım
- 22 Ara 2011
- Konular
- 49
- Mesajlar
- 245
- Online süresi
- 6d 15h
- Reaksiyon Skoru
- 187
- Altın Konu
- 2
- Başarım Puanı
- 138
- MmoLira
- 141
- DevLira
- 6
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ 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,893
- Mesajlar
- 5,201
- Çözüm
- 134
- Online süresi
- 1mo 8d
- Reaksiyon Skoru
- 4,001
- Altın Konu
- 140
- Başarım Puanı
- 339
- MmoLira
- 39,500
- 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
- 6d 15h
- Reaksiyon Skoru
- 187
- Altın Konu
- 2
- Başarım Puanı
- 138
- MmoLira
- 141
- DevLira
- 6
- Katılım
- 21 Kas 2018
- Konular
- 79
- Mesajlar
- 1,826
- Çözüm
- 3
- Online süresi
- 3mo 18d
- Reaksiyon Skoru
- 242
- Altın Konu
- 0
- Başarım Puanı
- 141
- MmoLira
- 9,771
- 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
- 6d 15h
- Reaksiyon Skoru
- 187
- Altın Konu
- 2
- Başarım Puanı
- 138
- MmoLira
- 141
- 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 : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 17
- Görüntüleme
- 1K




