Segmenty pamięci programu

Pamięć działającego programu podzielona jest na segmenty. Podział na segmenty jest dobrze zobrazowany przez rysunek z wikipedii.

Po kompilacji programu ustalana jest zawartość segmentów text, data oraz bss.

Podczas działania program korzysta z dwóch dodatkowych segmentów stack oraz heap.

static oraz extern

Słowo kluczowe static może budzić wątpliwości - po co w ogóle go używać, skoro nie umieszczamy danej zmiennej/funkcji w pliku nagłówkowym? Odpowiedź jest prosta - możemy użyć funkcji/zmiennej z jednego modułu w drugim module bez załączania pliku nagłówkowego - wystarczy zadeklarować istnienie zmiennej/funkcji o danej nazwie, a linker połączy tą deklarację z implementacją za nas. Tutaj znajduje się dokładniejsze, bardzo sensowne wyjaśnienie tego zjawiska - link.

make:

Przy pisaniu plików makefile warto pamiętać, że aby dowiedzieć się, czy należy przebudować dany moduł, program make sprawdza datę edycji jedynie plików wpisanych jako zależności. Tzn jeśli do pliku źródłowego dodamy nową zależność #include "something.h", to załączany moduł należy dodać do zależności w makefile.