@F1fan:
Nie.
Po 1:
Granulacja stronicowania w x86 to zwykle 4 KiB - oznacza to, iż jeśli zaalokowałeś sobie coś pod adresem x, to w rzeczywistości zaalokowałeś co najmniej jedną stronę o rozmiarze 4 KiB zaczynającą się na adresie (x & -4096), a kończącą na (x | 4095). Aby uniknąć fragmentowania pamięci (ważne pod systemami 32-bitowymi, pod 64-bitowymi nie jest to takie ważne, bo ciężko tam o taką fragmentację, żeby nie dało się zaalokować dużego ciągłego bloku) system może alokować wiekszymi partiami i wtedy miałbyś od razu dostęp do większej ilości pamięci.
Po 2:
Dealokacja jest zwykle opóźniona po to, aby zwiększyć wydajność. Przebijanie się przez poziomy uprawnień w procesorze trochę trwa, tzn chodzi mi np o wywołania z kernela. Aby zmniejszyć ilość wywołań jądra, lokalny dla procesu alokator pamięci alokuje większymi partiami i dealokuje z opóźnieniem. Dzięki temu jest większa szansa na to, że przy alokowaniu będzie miał pod ręką dostępną pamięć oznaczoną jako niezaalokowaną i nie będzie musiał wykonywać kosztownych odwołań do jądra.
Po 3:
To do @Endrju napisał.