• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ładowanie różnych części aplikacji w trakcie jej działania

Object Storage Arubacloud
0 głosów
117 wizyt
pytanie zadane 12 lutego 2019 w C i C++ przez gimme20dollaz Nowicjusz (120 p.)
Cześć.

Ostatnio wymyśliłem że napiszę sobie w SFMLu edytor poziomów do Mario który będzie oferował możliwość rozegrania stworzonej mapy. Wymyśliłem też żeby poszerzyć trochę horyzonty i spróbować napisać tą grę tak aby ładować tylko te części aplikacji które są potrzebne, o co mi chodzi: odpalając grę mamy wybór czy chcemy stworzyć poziom czy też chcemy rozegrać jeden z już stworzonych poziomów. Odpalając edytor poziomów nie są potrzebne skrypty dla potworków i Mario a kiedy odpalamy poziom nie ma potrzeby ładować tekstur które nie będą używane w danym poziomie.

Problemem jest to że kompletnie nie wiem jak się za coś takiego zabrać, bo jeżeli dobrze rozumiem to gdybym napisał np. funkcję odpowiadającą za śmierć Mario w pliku .cpp i po prostu zaincludował ją w kodzie to przez cały czas działania programu ona byłaby w pamięci a ja chcę żeby załadowała się dopiero kiedy będę tego chciał. Przypuszczam że do tego używa się plików .dll. Jeżeli tak to pojawia się kolejne kilka problemów, mianowicie: czy funkcje zawarte w tym pliku pisać tak jakbym pisał w zwykłym pliku nagłówkowym? Oraz czy mogę tam używać klas z SFMLa np. sf::renderwindow itp.?

Będę bardzo wdzięczny za wszelkie wskazówki, linki i ewentualne wyprowadzenie z błędów które zauważyliście w tym co napisałem. Pozdrawiam i dziękuje z góry za odpowiedzi.
komentarz 13 lutego 2019 przez DragonCoder Nałogowiec (36,500 p.)
To ze funkcja jest napisana, nie oznaczs ze jest wywolana. Funkcje dziala w momencie jej wywolania.
komentarz 14 lutego 2019 przez gimme20dollaz Nowicjusz (120 p.)
Oczywiście ale chyba nawet gdy na pisze kod funkcji która nigdzie nie jest wywoływana to podczas uruchomienia programu jej kod i tak zostaje załadowany do pamięci pod konkretny adres. Wywołanie jej oznacza dopiero skok pod ten adres. Więc nieużywana funkcja ciągle zajmuje miejsce a ja się chce tego pozbyc

1 odpowiedź

0 głosów
odpowiedź 15 lutego 2019 przez VirtualMember Pasjonat (15,790 p.)
Więc nieużywana funkcja ciągle zajmuje miejsce a ja się chce tego pozbyc

Cały stuff, który piszesz jest skompilowany i reprezentowany jako treść maszynowa - poważnie - przejmowanie się jej wielkością jest zupełnie zbędne zwłaszcza, że kompilator nie tylko tak sobie mieli kod, by można było go odpalić, ale również przeprowadza wiele optymalizacji. A dopóki nie wywołasz funkcji to (tak jak @DragonCoder powiedział), nie zużywasz dodatkowych zasobów.

Jeśli chcesz na prawdę by program nie miał absolutnie żadnej styczności z funkcją, dopóki jej nie wywoła to być może pomyśl o językach interpretowanych - wydaje mi się (verification needed), że to spełni Twoje warunki poza tym, że sam kod tej funkcji zajmuje miejsce w pliku - ale bez tego się nie da.

Podobne pytania

+1 głos
1 odpowiedź 162 wizyt
0 głosów
0 odpowiedzi 197 wizyt
pytanie zadane 25 stycznia 2023 w C i C++ przez hicodyn Początkujący (420 p.)
0 głosów
1 odpowiedź 305 wizyt
pytanie zadane 31 grudnia 2019 w C i C++ przez Sejdi Początkujący (460 p.)

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...