←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Zmienne w funkcjach a pamięć...


Najlepsza odpowiedź K!113r 04.06.2013 17:10

Jest tworzona raz, po zakończeniu działania funkcji zamraża swoją wartość, przy kolejnym wywołaniu funkcji odmraża się jej wartość, słowem raz utworzona żyje sobie dalej po zakończeniu działania funkcji, więc lepiej jej użyć w np. prethinku, zamiast kilkadziesiąt razy na sekunde tworzyć zmienną lepiej ją zrobić raz. Odp. "Tak"

Przejdź do postu
Zablokowany

  • +
  • -
Czaso Umilacz - zdjęcie Czaso Umilacz 03.06.2013

Witam,

nigdy się nad tym nie zastanawiałem ale naszło mnie pytanie, deklarując zmienną w funkcji np:

public Funkcja(){
	new zmienna[1024];
		
	return PLUGIN_CONTINUE;
}

I teraz pytanie, kiedy zmienna będzie ładowana do pamięci RAM serwera?


Użytkownik Czaso Umilacz edytował ten post 03.06.2013 21:30
Odpowiedz

  • +
  • -
GwynBleidD - zdjęcie GwynBleidD 03.06.2013

Przy każdym wywołaniu funkcji będzie ona tworzona na stosie... Co jest bardzo złe w przypadku tak dużej tablicy. Przy deklaracji jako static będzie ona tworzona na początku każdej mapy.

Odpowiedz

  • +
  • -
Czaso Umilacz - zdjęcie Czaso Umilacz 04.06.2013

Czyli zmienna "new" jest tworzona co wywołanie funkcji, natomiast static jest raz zrzucana do pamięci?

Odpowiedz

  • +
  • -
Najlepsza odpowiedź K!113r - zdjęcie K!113r 04.06.2013

Jest tworzona raz, po zakończeniu działania funkcji zamraża swoją wartość, przy kolejnym wywołaniu funkcji odmraża się jej wartość, słowem raz utworzona żyje sobie dalej po zakończeniu działania funkcji, więc lepiej jej użyć w np. prethinku, zamiast kilkadziesiąt razy na sekunde tworzyć zmienną lepiej ją zrobić raz. Odp. "Tak"

Odpowiedz

  • +
  • -
Czaso Umilacz - zdjęcie Czaso Umilacz 04.06.2013

Dzięki, czas się zabawiać staticem, moja nowa obsesja w funkcjach :D

Odpowiedz
Zablokowany