What does “Memory allocated at compile time” really mean?
W językach programowania takich jak C i C ++ ludzie często odwołują się do statycznej i dynamicznej alokacji pamięci. Rozumiem koncepcję, ale wyrażenie „Cała pamięć została przydzielona (zarezerwowana) podczas kompilacji” zawsze mnie myli.
Kompilacja, jak rozumiem, konwertuje wysoki poziom kodu C / C ++ na język maszynowy i generuje plik wykonywalny. Jak pamięć jest „przydzielana” w skompilowanym pliku? Czy pamięć nie jest zawsze przydzielana w pamięci RAM ze wszystkimi elementami zarządzania pamięcią wirtualną?
Czy przydział pamięci z definicji nie jest pojęciem wykonawczym?
Jeśli zrobię statycznie przydzieloną zmienną o wielkości 1 KB w moim kodzie C / C ++, czy zwiększy to rozmiar pliku wykonywalnego o tę samą kwotę?
Jest to jedna ze stron, na których wyrażenie jest używane pod nagłówkiem „Przydział statyczny”.