Skocz do zawartości

Zwalnianie pamięci po strukturach


hamtaren

Rekomendowane odpowiedzi

W zmiennej zapisywany jest tylko numer id struktury. Zwykły int. Po tym numerze GM wie do czego się odwołujesz. Struktura pozostaje do czasu jej usunięcia. Gdy zapomnisz jej adresu to ona dalej tam będzie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Dodatkowo, jeśli wsadzasz strukturę w strukturę, ją nadal musisz kasować. Chyba, że oznaczyłeś dany element jako strukturę (ds_list_mark_as_xxx) albo odkodowałeś JSON.

Odnośnik do komentarza
Udostępnij na innych stronach

Dodatkowo, jeśli wsadzasz strukturę w strukturę, ją nadal musisz kasować. Chyba, że oznaczyłeś dany element jako strukturę (ds_list_mark_as_xxx) albo odkodowałeś JSON.

 

Zważając, że hamtaren pytał o ds_map'y dodam tylko, że jak chcesz dodać struktury do map( a nie list) to funkcje nazywają się ds_map_add_list i ds_map_add_map.

 

Trochę niefajnie ze strony yoyo, że jedno wywołuje się oznaczając istniejące elementy (mark_as_*) a drugie trzeba od razu dodać jako struktura (add_*)

Odnośnik do komentarza
Udostępnij na innych stronach

Z tego co mi wiadomo to tylko zwykłe tablice i ds_grid w GM:S zajmują miejsca w pamięci obok siebie. Reszta struktur jest i tak rozbita po całej pamięci już w momencie ich utworzenia. Nie możesz ustalić przy ds_*_create rozmiaru struktury. Dostaje on mała bańkę na start a potem przy dodawaniu danych są one lokowane gdzie się da. Nie ważne czy ds_map, ds_list, ds_stack, ds_queue czy priority list.

Odnośnik do komentarza
Udostępnij na innych stronach

Z tego co mi wiadomo to tylko zwykłe tablice i ds_grid w GM:S zajmują miejsca w pamięci obok siebie. Reszta struktur jest i tak rozbita po całej pamięci już w momencie ich utworzenia. Nie możesz ustalić przy ds_*_create rozmiaru struktury. Dostaje on mała bańkę na start a potem przy dodawaniu danych są one lokowane gdzie się da. Nie ważne czy ds_map, ds_list, ds_stack, ds_queue czy priority list.

 

No tak było, że się dodawały jak popadnie, ale od czasu win7 winda robi alokację dla dodawanych danych aplikacji. Więc nawet jak skasujesz to początkowo utworzony rozmiar struktury zostaje bez przydziału, aż do czasu że się ram skończy, wtedy winda szuka co nie jest używane.

 

Ale jak dodajesz w locie to rzeczywiście tak się dzieje jak piszesz.

 

Wrzuciłem rano gigantyczną, nie mającą się prawa zmieścić w pamięci listę struktur w ten sposób i działa. Jak doładowuję w locie - emo z żyletką.

Odnośnik do komentarza
Udostępnij na innych stronach

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

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...