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
anlatmaya çalıştığımı hiç anlamamışsın neyse boşver iyi çalışmalar.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
Bana birşeyleri anlatmaya çalışamana gerek yok sağol yaparsın konuya dahil ederim. sanadaanlatmaya çalıştığımı hiç anlamamışsın neyse boşver iyi çalışmalar.
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)paylaşım için teşekkürler.
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)
Benzer konular
- Cevaplar
- 9
- Görüntüleme
- 862
- Kilitli
- Cevaplar
- 7
- Görüntüleme
- 2K
- Kilitli
- Cevaplar
- 1
- Görüntüleme
- 469
- Cevaplar
- 37
- Görüntüleme
- 2K
