- Katılım
- 29 Eyl 2009
- Konular
- 1,298
- Mesajlar
- 18,700
- Çözüm
- 203
- Online süresi
- 7mo 18h
- Reaksiyon Skoru
- 9,275
- Altın Konu
- 377
- Başarım Puanı
- 426
- Yaş
- 32
- MmoLira
- 51,333
- DevLira
- 74
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!
DirectQuery fonksiyonu da zaten bir pointer fonksiyonu ama standart pointerların aksine smart pointerlar işlevini tamamladıktan sonra ramden silindiği için manuel olarak temizlenmeye ihtiyaç duymuyor. Eski pointerdan kalan ve ramde bulunmayan bir değerin silinmeye çalışılması emin olmamakla beraber Memory corruption yol açabileceğini düşünüyorum. Ama yine söylüyorum bu konuda çok iyi değilim elbet daha iyi bilen vardır ve en doğrusunu belirtir.Pointer ne işe yarıyor başımıza sorun oluştururmu tarzında sorular sorulmasından çekindiğim için böyle yazdım
- Katılım
- 2 May 2019
- Konular
- 5
- Mesajlar
- 127
- Online süresi
- 7d 3h
- Reaksiyon Skoru
- 150
- Altın Konu
- 0
- TM Yaşı
- 7 Yıl 1 Ay 7 Gün
- Başarım Puanı
- 80
- MmoLira
- 730
- DevLira
- 15
Bunu söylerken neye dayanarak söylediniz merak ettim ?hepsi kendini kullandıktan sonra temizlemesine gerek yok zaten yeri geldiğinde kullanılıyor
SQLMsg * CAsyncSQL:
irectQuery(const char * c_pszQuery)fonksiyonunu incelerseniz;
SQLMsg * p = new SQLMsg;
pointer oluşturup döndürüyor, bunu işlevi bittiğinde bellekten temizlemez ise memory leak lar ile boğuşursunuz.
- Katılım
- 2 May 2019
- Konular
- 5
- Mesajlar
- 127
- Online süresi
- 7d 3h
- Reaksiyon Skoru
- 150
- Altın Konu
- 0
- TM Yaşı
- 7 Yıl 1 Ay 7 Gün
- Başarım Puanı
- 80
- MmoLira
- 730
- DevLira
- 15
Evet, Temiz bir sourceyi incelersen;C++:if(!IsPC()) { if (pkKiller && pkKiller->IsPC() && 2092 == GetMobTable().dwVnum) { DBManager::instance().DirectQuery("UPDATE player SET bbarones = bbarones+1 WHERE name = '%s'", pkKiller->GetName()); } else if (pkKiller && pkKiller->IsPC() && 2493 == GetMobTable().dwVnum) { DBManager::instance().DirectQuery("UPDATE player SET bejder = bejder+1 WHERE name = '%s'", pkKiller->GetName()); } }
demene göre o zaman mesela ThePRNCE'nin boss sıralama sisteminde bu sorun var yani şimdi her kesilen boss ramde boss sıralama sistemi için yer mi tutuyor
delete CDBManager::instance().DirectQuery
SQLMsg * pMsg = CDBManager::instance().DirectQuery
delete pMsg;
std::auto_ptr<SQLMsg> pkMsg(CDBManager::instance().DirectQuery(query))
Queryler de sürekli bu tarz kodlar görürsün, ymırın' da unuttuğu bazı yerler mevcut tabi.
- Katılım
- 25 Tem 2011
- Konular
- 37
- Mesajlar
- 373
- Çözüm
- 6
- Online süresi
- 24d 15h
- Reaksiyon Skoru
- 185
- Altın Konu
- 0
- TM Yaşı
- 14 Yıl 10 Ay 20 Gün
- Başarım Puanı
- 169
- MmoLira
- 6,859
- DevLira
- 21
szQuery tanımsız olduğu için hata alırsınC++:if(!IsPC()) { char szQuery[QUERY_MAX_LEN]; if (pkKiller && pkKiller->IsPC() && 2092 == GetMobTable().dwVnum) { snprintf(szQuery, sizeof(szQuery), "UPDATE player SET bbarones = bbarones+1 WHERE name = '%s'", pkKiller->GetName()); delete DBManager::instance().DirectQuery(szQuery); } else if (pkKiller && pkKiller->IsPC() && 2493 == GetMobTable().dwVnum) { snprintf(szQuery, sizeof(szQuery), "UPDATE player SET bejder = bejder+1 WHERE name = '%s'", pkKiller->GetName()); delete DBManager::instance().DirectQuery(szQuery); } } Biraz inceledim tam anlayamamakla beraber böyle yapsam ne olur ?
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 6
- Görüntüleme
- 309
- Cevaplar
- 4
- Görüntüleme
- 265
- Cevaplar
- 25
- Görüntüleme
- 2K









