Ostatnio pracowałem nad naprawą funkcji przeładowania questów, która była przyczyną awarii serwera i natknąłem się na kolejny poważny problem.
W funkcji 'CQuestManager::Reload' brakuje kodu do wyczyszczenia timerów serwerowych. To zaniedbanie może prowadzić do wycieków pamięci i różnych niezdefiniowanych zachowań.
Wprowadzone zmiany w finalnej wersji funkcji CQuestManager::Reload() :
Wprowadziłem sprawdzenie poprawności inicjalizacji. Jeżeli inicjalizacja nie powiedzie się, funkcja zwróci komunikat o błędzie, co pozwala na lepszą kontrolę nad procesem ładowania.
Aby zapobiec potencjalnym wyciekom pamięci, dodałem procedurę czyszczenia timerów serwerowych.
Ulepszyłem sposób iteracji przez m_registeredNPCVnum, korzystając z nowszego, bardziej czytelnego standardu - range-based for loop.
Zrezygnowałem z przestarzałej funkcji snprintf na korzyść konwersji liczb na ciągi znaków za pomocą std::to_string. Jest to bardziej efektywny i zwięzły sposób konwersji.
Poprawiłem przypisanie wskaźnika L z NULL na bardziej nowoczesne i zalecane nullptr.
Cześć,
Ostatnio pracowałem nad naprawą funkcji przeładowania questów, która była przyczyną awarii serwera i natknąłem się na kolejny poważny problem.
W funkcji 'CQuestManager::Reload' brakuje kodu do wyczyszczenia timerów serwerowych. To zaniedbanie może prowadzić do wycieków pamięci i różnych niezdefiniowanych zachowań.
Implementacja:
📁 Lokalizacja pliku: 'game -> questmanager.cpp'
🔍 Szukaj
➕ Dodaj
🗒️Podgląd implementacji:
Refaktoryzacja:
Wprowadzone zmiany w finalnej wersji funkcji CQuestManager::Reload() :
🔍 Szukaj
♻️ Zamień:
🔍 Szukaj
♻️ Zamień
🔍 Szukaj
➕ Dodaj
🔍 Szukaj
♻️ Zamień
🗒️Finalna wersja: