Skocz do zawartości

Naprawa wycieku pamięci w systemie magazynu: funkcja 'ChangeSize'

Opublikowano

image.png.d7f22788728caf3886ccc11653d89e13.png

 

Cześć Wszystkim,

 

Chciałbym przedstawić problem wycieku pamięci w systemie magazynu. Rzućmy okiem na funkcję z której pochodzi ten problem:

🔐 Ukryta Treść 🔐

 

Omówienie problemu:

Funkcja zmienia rozmiar magazynu 'm_pkGrid'. Kiedy przypisuje nowy obiekt 'CGrid' do 'm_pkGrid', nie zwalnia wcześniej starego obiektu 'CGrid'.

W wyniku tego stary obiekt 'CGrid' pozostaje w pamięci, mimo że nie jest już używany przez game. Powoduje to właśnie wyciek pamięci. 

 

Rozwiązanie:

Zamiast bezpośredniego tworzenia nowego obiektu, najpierw zwolnimy starą pamięć.

Użyjemy tutaj inteligentnych wskaźników (smart pointers), które automatycznie zarządzają pamięcią i zapobiegają tego typu problemom.

 

 

Zachęcam do dyskusji na temat tego rozwiązania i wszelkich innych sugestii, które mogą pomóc w usprawnieniu.

 

Implementacja:

📂 Lokalizacja pliku: 'game -> safebox.cpp'

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

Usuń:

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 ♻️ Zamień

🔐 Ukryta Treść 🔐

 

 

 📂 Lokalizacja pliku: 'game -> safebox.h'

 

Usuń:

🔐 Ukryta Treść 🔐

 

Dodaj:

🔐 Ukryta Treść 🔐

 

 

 📂 Lokalizacja pliku: 'db-> ClientManager.cpp'

 

  🔍 Szukaj

🔐 Ukryta Treść 🔐

 

Dodaj:

🔐 Ukryta Treść 🔐

 

   🔍 Szukaj

🔐 Ukryta Treść 🔐

 

  ♻️ Zamień

🔐 Ukryta Treść 🔐

 

   🔍 Szukaj

🔐 Ukryta Treść 🔐

 

   ♻️ Zamień

🔐 Ukryta Treść 🔐

 

    🔍 Szukaj

🔐 Ukryta Treść 🔐

 

    ♻️ Zamień

🔐 Ukryta Treść 🔐

Featured Replies

Opublikowano

Areczku bardzo dobra robota z tym wyciekiem!

image.png.c8983d340116ba4531ca5198377adcc6.png

Opublikowano

Jeju, ile tych wycieków. Niedługo będzie można zrobić jezioro xD

Opublikowano

Dziękuje

  • 2 miesiące temu...
Opublikowano

dzięki

  • 1 miesiąc temu...
Opublikowano

thx

  • 2 tygodnie później...
Opublikowano

dzięki ❤️

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