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

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

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]

  • 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.