No kurka wodna, muszę napisać, że się kompletnie z tym nie zgadzam:
Czy tablica 32 MB jest ogromna? Na pewno w systemie embadded na arduino lub sterowniku pralki na mikrokontrolerze, tak jest. Nie powinno się więc generalizować i uogólniać, lecz dostosowywać do aktualnej sytuacji i analizować!
Mnie to przeraża
, że można tak pomyśleć, że 32MB na STACK’u to nie dużo, dla mnie to nieskończoność.
W systemach takich jak Linux/Windows używany jest mechanizm translacji pamięci: MMU. Dzięki niemu w trybie chronionym (user space), gdzie program widzi tylko swoją przestrzeń adresową i myśli, że jest jedynym odpalonym programem, STACK może się rozrosnąć do dużych rozmiarów, co jest często nadużywane przez niedoświadczonych programistów. Jeżeli ów programista zdaje sobie z tego sprawę, że pisze kod, który nie będzie wszędzie działał, to ok, gorzej, że o tym może nie wiedzieć.
Przykładowo sterownik dla tego systemu, który działa w trybie rzeczywistym (już wtedy bez wsparcia MMU),
widzi pamięć całego systemu, wtedy dopiero wychodzi, dlaczego na rozmiar STACK’a tak trzeba uważać, i to pomimo tego, że na pokładzie mamy gigabajty RAM’u.
Prosty przykład, moj PC, może stary, ale to nie jest ani Arduino ani Pralka:
CPU:i7-3770, RAM:32GB, SSD:2TB, SYSTEM:Ubuntu 20.04.6 LTS
Prosty nic nierobiący sterownik driver.c dla linuxa, który w funkcji startującej definiuje tablicę na STACK’u o rozmiarze 32KB (32 kilo bajtów).
Po załadowaniu tego sterownika do systemu:
# insmod driver.ko
tylko przez to, że ten program był tak nieuprzejmy, że skorzystał “aż” z 32KB na STACK’u, wszystko się wiesza, cały system jest martwy. Pozostaje tylko reset całego komputera.
Generlanie, jest taka opinia, że dobry kod to jest taki, który jest “przenaszalny”, tworzenie dużych danych na STACK’u jest czymś wręcz przeciwnym.
Konkludując, trzeba jak najbradziej uważać na rozmiar STACK’a.
Jeżeli chodzi o kursy programowania to nie będę się spierał, fajnie że są, lubię je pooglądać, czasami można się czegoś nowego dowiedzieć, a te Pana Mirosława Zelenta są specyficzne i mają swój urok, może dlatego, że czasami potrafią wkurzyć zaawansowanych, ale tak jest we wszystkich dziedzinach.
Osobiście kiedyś korzystałem z kursu MZ do nauki CSS’a, nie wiem, czy tam jest wszystko wytłumaczone precyzyjnie i idealnie, ale efekt był taki, że mi się przydał, byłem w stanie coś tam zrobić.
Pzdr.