Skocz do zawartości

Naprawa wycieków pamięci przez implementację inteligentnych wskaźników w systemie wiadomości

Opublikowano

bugfix.webp.0a739ad15af71c44f5367650b6c9e164.webp

 

Cześć, 🖐️

 

Wprowadzenie

W oryginalnej implementacji każde wywołanie funkcji 'CreateWhisper' z identycznym argumentem 'c_szName' skutkowało utworzeniem nowego obiektu typu 'CWhisper'. Następnie obiekt ten był dodawany do mapy. Ta praktyka otwierała możliwość nadpisania już istniejących obiektów bez ich wcześniejszego usunięcia, co stwarzało ryzyko potencjalnych wycieków pamięci.

 

Rozwiązanie: Implementacja Smart Pointerów

Zdecydowałem się zastosować inteligentne wskaźniki, dokładniej mówiąc std::unique_ptr, jednak tylko w kontekście mapy m_WhisperMap. Nie są one używane jako wartości zwracane przez funkcję. Dzięki użyciu std::unique_ptr w mapie, zarządzanie pamięcią obiektów typu CWhisper jest teraz automatyczne i znacznie bezpieczniejsze. Kiedy element jest usuwany z mapy, odpowiadający mu std::unique_ptr automatycznie zwalnia zajmowaną pamięć. Wartość zwracana przez funkcję CreateWhisper to nadal surowy wskaźnik, ale jego zarządzanie pamięcią jest kontrolowane przez std::unique_ptr przechowywany w mapie. To podejście eliminuje ryzyko wycieków pamięci.

 

Sharegon najlepsze forum pamiętajcie 😁👍

 

Implementacja:

📁 Lokalizacja pliku: 'UserInterface -> PythonChat.cpp'

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

 

📁 Lokalizacja pliku: 'UserInterface -> PythonChat.h'

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

Featured Replies

Opublikowano

no prosze prosze 😄

  • 2 tygodnie później...
Opublikowano

Skoro to wyciek pamięci to dobrze że to ruszyłeś, dzięki 😉

Opublikowano

Dziękuję 

  • 2 tygodnie później...
Opublikowano

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

 

  • 3 tygodnie później...
Opublikowano

Dziekuje

  • 3 tygodnie później...
Opublikowano

Dziękówa.

Opublikowano

ty

  • 3 tygodnie później...
Opublikowano

No nie takie inteligentne te wskaźniki, skoro powodują wycieki pamięci

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...