hamtaren Opublikowano 21 Września 2015 Udostępnij Opublikowano 21 Września 2015 Czy jeżeli zadeklaruję strukturę w sposób: GML { var tempMap = ds_map_create(); ... } To trzeba zwalniać pamięć, czy czyści się automatycznie po zakończeniu bloku kodu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 21 Września 2015 Udostępnij Opublikowano 21 Września 2015 Trzeba. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hamtaren Opublikowano 21 Września 2015 Autor Udostępnij Opublikowano 21 Września 2015 Dzięki, to by wyjaśniało czemu mi tak muli wszystko. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 21 Września 2015 Udostępnij Opublikowano 21 Września 2015 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 Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 21 Września 2015 Administratorzy Udostępnij Opublikowano 21 Września 2015 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 Więcej opcji udostępniania...
I am vader Opublikowano 21 Września 2015 Udostępnij Opublikowano 21 Września 2015 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 Więcej opcji udostępniania...
3r3se7ven Opublikowano 21 Września 2015 Udostępnij Opublikowano 21 Września 2015 Yoyo oczywiście ukryło w dokumentacji, że lżej jest sprowadzić strukturę do empty niż ją kasować, dlatego dobrze jest przygotować sobie strukturę na te śmieci najwyżej trzymać je puste, bo inaczej zrobi w pamięci siekankę i wtedy dopiero się muli :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 21 Września 2015 Udostępnij Opublikowano 21 Września 2015 Jakie wykonałeś testy żeby to sprawdzić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 21 Września 2015 Udostępnij Opublikowano 21 Września 2015 Jakie wykonałeś testy żeby to sprawdzić? real_fps max min average Empty kasuje zawartość struktury, a destroy zwalnia miejsce po strukturze i robi się sieka (fragmentacja). Dobrze jest przygotować miejsce na sztywno. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 22 Września 2015 Udostępnij Opublikowano 22 Września 2015 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 Więcej opcji udostępniania...
3r3se7ven Opublikowano 23 Września 2015 Udostępnij Opublikowano 23 Września 2015 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę