Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Naprawa błędu z wyciekiem pamięci w funkcji przeładowującej zadania

Nieaktywny

Featured Replies

Opublikowano

 

bugfix.webp.0a739ad15af71c44f5367650b6c9e164.webp

 

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

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

 Dodaj

🔐 Ukryta Treść 🔐

 

 🗒️Podgląd implementacji:

Spoiler

image.png.fecd5d0f3e6045de7837a13ddd6e1603.png

 

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

🔐 Ukryta Treść 🔐

 

♻️ Zamień:

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

  🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 Dodaj

🔐 Ukryta Treść 🔐

 

   🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 ♻️ Zamień

🔐 Ukryta Treść 🔐

 

 🗒️Finalna wersja:

🔐 Ukryta Treść 🔐
  • 4 tygodnie później...
Opublikowano

Dzieląc się tym kodem, sprawiłeś, że gra jest o niebo lepsza. Dzięki!

 

  • 2 tygodnie później...
  • 2 tygodnie później...
Opublikowano

Dziękuję za udostępnienie poprawki. Bardzo mi pomogła. 🔥👌

 

  • 1 miesiąc temu...
  • 3 miesiące temu...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.