Opublikowano 22 Października 20232 l 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 Tylko zalogowani Zaloguj się, aby wyświetlić chronioną treść Ten post zawiera treści dostępne tylko dla członków. Zaloguj się lub utwórz konto, aby odblokować całą zawartość tego posta. Zaloguj się Utwórz konto ➕ Dodaj 🗒️Podgląd implementacji: Spoiler Refaktoryzacja: 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. 🔍 Szukaj ♻️ Zamień: 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ➕ Dodaj 🔍 Szukaj ♻️ Zamień 🗒️Finalna wersja:[hide] Spoiler [/hide]
Opublikowano 14 Listopada 20232 l Ten bug od dawna mnie irytował, ale twój kod to zmienił, wielkie dzięki.
Opublikowano 14 Listopada 20232 l Dzieląc się tym kodem, sprawiłeś, że gra jest o niebo lepsza. Dzięki!
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto