bList 1
bList
emirhanHCL 1
emirhanHCL
[DEV]AB 1
[DEV]AB
R 1
Roksam
farkmt2official 1
farkmt2official
Hikaye Ekle

C++ SwitchBot Düzeltme

  • Konuyu başlatan Konuyu başlatan LangonaWork
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 27
  • Görüntüleme Görüntüleme 7K
pkSwitchbot->~CSwitchbot();

bu fonksiyon delete işleminde yada class sonlandırıldığında tetiklenmiyormuydu ben mi yanlış biliyorum gereksiz olmuş bu satırlar

-----------------------------------

pkSwitchbot->~CSwitchbot();
delete pkSwitchbot;

UnregisterItem içine bu şekilde bir ekleme yapmak garip hatalı olmuş bu

mantıksal olarak bunlar zaten bu forumda yada yabancı forumlarda doğru halleri paylaşılmıştı diye hatırlıyorum. Bu şekilde bir kodlama güvenli değil.

-----------------------------------------

pkSwitchbot = NULL;

bunu eklemesen de olur sildikten sonra çağırmıyorsun zaten gereksiz olmuş.

Smart pointerda. mantıksal olarak bu şekilde olması daha iyi. std::unique_ptr veya std::shared_ptr kullanmış olsaydım eğer. dediğin gibi
/*
pkSwitchbot->~CSwitchbot();
bu fonksiyon delete işleminde yada class sonlandırıldığında tetiklenmiyormuydu ben mi yanlış biliyorum gereksiz olmuş bu satırlar
*/
gereksiz olurdu.

/*
pkSwitchbot = NULL;
bunu eklemesen de olur sildikten sonra çağırmıyorsun zaten gereksiz olmuş.
*/

C++:
        delete pkSwitchbot;
        sys_err("pkSwitchbot bellekten silindikten sonra: %p", get_pointer(pkSwitchbot));
        pkSwitchbot = NULL;
        sys_err("pkSwitchbot=NULL verildikten sonraki bellekten : %p", get_pointer(pkSwitchbot));

C++:
SYSERR: Jan 22 19:29:51 :: UnregisterItem: pkSwitchbot bellekten silindikten sonra: 0x2af88340
SYSERR: Jan 22 19:29:51 :: UnregisterItem: pkSwitchbot=NULL verildikten sonraki bellekten : 0x0
 
Smart pointerda. mantıksal olarak bu şekilde olması daha iyi. std::unique_ptr veya std::shared_ptr kullanmış olsaydım eğer. dediğin gibi
/*
pkSwitchbot->~CSwitchbot();
bu fonksiyon delete işleminde yada class sonlandırıldığında tetiklenmiyormuydu ben mi yanlış biliyorum gereksiz olmuş bu satırlar
*/
gereksiz olurdu.

/*
pkSwitchbot = NULL;
bunu eklemesen de olur sildikten sonra çağırmıyorsun zaten gereksiz olmuş.
*/

C++:
        delete pkSwitchbot;
        sys_err("pkSwitchbot bellekten silindikten sonra: %p", get_pointer(pkSwitchbot));
        pkSwitchbot = NULL;
        sys_err("pkSwitchbot=NULL verildikten sonraki bellekten : %p", get_pointer(pkSwitchbot));

C++:
SYSERR: Jan 22 19:29:51 :: UnregisterItem: pkSwitchbot bellekten silindikten sonra: 0x2af88340
SYSERR: Jan 22 19:29:51 :: UnregisterItem: pkSwitchbot=NULL verildikten sonraki bellekten : 0x0
anlatmaya çalıştığımı hiç anlamamışsın neyse boşver iyi çalışmalar.
 
paylaşım için teşekkürler.
asırlar önce bunu tartışmamız geldi aklıma xD neyse init kısmını çok uzatmışsın aşağıdaki gibi daha iyi olcaktır (en azından ben öle şeetmişim)

C++:
void CSwitchbotManager::Initialize()
{
    for (auto iter = m_map_Switchbots.begin(); iter != m_map_Switchbots.end(); ++iter)
        M2_DELETE(iter->second); // Remove pointer

    m_map_Switchbots.clear();
}

void CSwitchbotManager::P2PSendSwitchbot(DWORD player_id, WORD wTargetPort)
{
    ... orjinal kodun altına sadece bunu ekle
    M2_DELETE(pkSwitchbot);
}
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst