Yardım Great offline shop memory leak sorunu

  • Konuyu açan Konuyu açan cobo54
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 1
  • Gösterim Gösterim 517
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

cobo54

Üye
Üye
Mesaj
225
Çözümler
15
Beğeni
54
Puan
489
Ticaret Puanı
0
Merhaba, great kurulumu yaptım memory leak fixini yapmayı bir türlü beceremedim. Anlatımda şöyle yazılmış ancak ben bunları tam olarak nereye koyacağımı bulamadım.

delete msgleri nereye koymalıyım? Sonuna yazıyor koydugumda hata alıyorum.


Anlatım:
Genişlet Daralt Kopyala
void CHARACTER::UpdateShopItems()

Sonuna :
delete Msg;

#######################################################
void CHARACTER::LoadPrivShops()

Sonuna:
delete pkMsg;

#######################################################
void CHARACTER::OpenShop(DWORD id, const char* name, bool onboot)

Sonuna:
pkMsg.reset(nullptr);

#######################################################
ACMD(do_shop_update_item)

Sonrasına:
                    if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(30000, i))
                    {
                        CharacterVectorInteractor::iterator it = i.begin();
                        while (it != i.end())
                        {
                            LPCHARACTER pc = *it++;
                            if (pc)
                                if (pc->GetRaceNum() == 30000 && pc->GetPrivShop() == shop_id)
                                {
                                    pc->UpdateShopItems();
                                    return;
                                }
                        }
                    }
Ekle:
                    delete pkMsg;                   

Sonrasına:
                    if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(30000, i))
                    {
                        CharacterVectorInteractor::iterator it = i.begin();
                        while (it != i.end())
                        {
                            LPCHARACTER pc = *it++;
                            if (pc)
                                if (pc->GetRaceNum() == 30000 && pc->GetPrivShop() == shop_id)
                                {
                                    pc->UpdateShopItems();
                                    return;
                                }
                        }
                    }
Ekle:
                    delete pkMsg;
                    
Sonrasına:
                            TPacketShopUpdateItem packet;
                            packet.shop_id = shop_id;
                            db_clientdesc->DBPacket(HEADER_GD_SHOP_UPDATE_ITEM, 0, &packet, sizeof(packet));
                    }
                }
Ekle:
                delete pkMsg;
                    
#######################################################   
ACMD(do_shop_refresh_items)   

sonuna :
delete pkMsg;

#######################################################   
EVENTFUNC(fix_shop_event)

Önce:
    return PASSES_PER_SEC(SHOP_TIME_REFRESH * 60);
Ekle:
    delete pkMsg;
 
her kod
void CHARACTER::UpdateShopItems()
{
(kodlar)
}

biçimindedir yani tüm kodlar { } bu iki işaret arasına sıkıştırılmıştır mesela ilk örnekte updateshopitems kodunun sonuna gel diyo ve } bu işaretten önce ekle demek istiyor tümü aynı mantık
 
Üst