Kdyz se nad tim zamyslite, tak vam asi samotnemu dojde, ze by to byla dost zasadni dira do systemu. Takto by slo cist jakakoli data z jinych procesu napr. jinych uzivatelu.
Kdyz alokujete v C, tak vam knihovna da nejaky kus ktery byl nejspis v tom danem procesu uz pouzit drive, cili tam bude nahodny bordel z toho procesu. Pokud uz v ramci procesu pamet neni, tak system prideli nejake nove stranky a predpokladam (popravde nevim), ze to vynuluje nebo nejak jinak nastavi/znahodni.
No ve Windows se alokuje pomocí VirtualAlloc a každý commitnutý 4KB blok (stránka) je automaticky nulovaný. V linuxu se blok commituje při prvním přístupu (před tím, co je rezervován mallocem) a vsadím se, že je taky vynulovaný. Jakmile je blok commitlý, patří plně do vlastnictví procesu.
Jednodušeji a lépe, každý proces je v paměti naprosto a dokonale izolován. Z jeho pohledu je v paměti sám a na nevyužitých adresách jsou buď nuly, nebo minové pole. Jen za určitých okolnosti lze sdílet paměť mezi procesy, ale to musí extra vyjednat a pak ten proces vidí sdílený kus ve vyjednaném rozsahu a ani o bajt víc.
Alokace paměti má dvě vrstvy: procesovou a jadernou. Jaderná alokuje vždy po stránkách, jinak to neumí. Ty samozřejmě mohly patřit jiné aplikace, a tak je při alokaci vždy vynuluje. Takže k úniku dat z jiné aplikace takhle dojít nemůže. Uvnitř procesu se pak tyto stránky rozdělují na menší jednotky, protože datové struktury málokdy potřebují celou stránku. Ty se po dealokaci recyklují (volání jádra jsou dost drahá, proto se alokátor snaží je minimalizovat), ale to už nikdo nemaže a tak při další alokaci můžou být na naalokovaném místě dříve smazaná data toho samého procesu.