Opublikowano 25 Października 20232 l 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<CWhisper>, 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 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 ♻️ Zamień 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ♻️ Zamień 📁 Lokalizacja pliku: 'UserInterface -> PythonChat.h' 🔍 Szukaj ♻️ Zamień 🔍 Szukaj ♻️ Zamień
Opublikowano 12 Listopada 20232 l Dzieląc się tym kodem, sprawiłeś, że gra jest o niebo lepsza. Dzięki!
Opublikowano 1 Stycznia 20242 l No nie takie inteligentne te wskaźniki, skoro powodują wycieki pamięci
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto