Czas kompilacji

0

Mam pytanie i byłbym niezmiernie wdzięczny gdyby ktoś mógł udzielić odpowiedzi. To co my napiszemy czyli kod źródłowy jest tłumaczony na kod maszynowy przez kompilator później linkowane są biblioteki i mamy plik wykonywalny i często się spotykam, że w książkach jest napisane żę np,. pamięć dla zmiennej jest przydzielona podczas procesu kompilacji, ale co to znaczy, że kompilator przydziela pamięć? Trochę to bez sensu. Czy nie jest przypadkiem tak, że ten program exe jest ładowany do pamięci i dopiero wtedy przydzielana jest pamięc na poszczególne zmienne?

1

Ale jeżeli zadeklarowałeś:
void f() { int tb[4]; ... }
to kompilator już przeznaczy te 16 bajtów dla tb jako kolejne 16 bajtów na stosie,
Co to znaczy „kompilator już przeznaczy”? Sam w poprzednim zdaniu napisałeś, że „jakakolwiek pamięć przydziela się dopiero po odpaleniu programu”...

nawet jeżeli funkcja f() nigdy nie zostanie odpalona w programie.
No nie; z samej zasady działania stosu wynika, że pamięć na nim jest przydzielana w momencie wejścia w funkcję, a przestaje być przydzielona gdy funkcja kończy działanie.

ale co to znaczy, że kompilator przydziela pamięć? Trochę to bez sensu.
Zdanie wyrwane z kontekstu rzeczywiście jest bez sensu. Może znaczyć tyle, że nie musisz przydzielać pamięci ręcznie (tj. wywołując odpowiednie komendy), tylko dzieje się to w jakiś sposób automatyczny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1