Überladung meines Dienstes
-
Hallo,
ich habe folgendes Problem.
In dieser Funktion überläd sich irgendetwas. Ich finde allerdings nicht raus wo und vorallem nicht warum.
Es handelt sich hierbei um ein Snippet aus einem Game Server, der bei einer ungefähren Belastung von 150 Spielern nach ~26 Stunden abstürzt.
SC Snippet:
void CTItem::WrapPacketClient(CPacket * pPacket, DWORD dwCharID, BYTE bAddItemID, WORD wUseTime, BYTE bCashItem) { BYTE bRegGuild = FALSE; if( m_dwExtValue[IEV_GUILD] && m_dwExtValue[IEV_GUILD] == dwCharID) bRegGuild = TRUE; if(bAddItemID) (*pPacket) << m_bItemID; (*pPacket) << m_wItemID << m_bLevel << m_bCount << m_dwDuraMax << m_dwDuraCur << m_pTITEM->m_bRefineMax << m_bRefineCur << m_bGLevel; if(bCashItem) (*pPacket) << wUseTime; else (*pPacket) << m_dEndTime; (*pPacket) << m_bGradeEffect << BYTE(m_dwExtValue[IEV_ELD]) << BYTE(m_dwExtValue[IEV_WRAP]) << WORD(m_dwExtValue[IEV_COLOR]) << bRegGuild << BYTE(m_mapTMAGIC.size()); MAPTMAGIC::iterator itTMAGIC; for( itTMAGIC = m_mapTMAGIC.begin(); itTMAGIC != m_mapTMAGIC.end(); itTMAGIC++) { (*pPacket) << (*itTMAGIC).first << GetMagicValue((*itTMAGIC).second); } }
Nun bei jedem Absturz erstellt der Dienst mir eine Dump Datei. Die zeigt mir allerdings an, dass die Ausdrücke .first und .second nicht ausgewertet werden können. Nun frage ich mich wieso. Vielleicht wissen Sie ja weiter ?
Danke im Voraus !
-
Collo schrieb:
...
Es handelt sich hierbei um ein Snippet aus einem Game Server, der bei einer ungefähren Belastung von 150 Spielern nach ~26 Stunden abstürzt.Die Fehlerbeschreibung lässt ehr zuviel Resourcenverbrauch vermuten. Speicherleck? Socket Handle leaks sind auch sehr beliebt
- osdt
-
Danke für deine Hilfe. Hättest du eine Idee was man da machen könnte ?