Lze o tom někde nalézt více informací? Zajímá mě to, protože pokud lze naalokovat nesouvislý blok paměti, pak je to v rozporu s několika fakty:
- proč funkce jako malloc, calloc, new apod. vrací chybu, pokud v paměti neexistuje souvislý blok o požadované velikosti?
- proč nelze dynamicky zvětšit pole a je nutné jej překopírat do souvislé oblasti? I např. funkce realloc, která slouží pro změnu velikosti alokované paměti, alokuje novou paměť, pokud by současný blok nebyl po zvětšení souvislý.
- s druhou otázkou souvisí i fakt, že knihovna STL jazyka C++ poskytuje dva kontejnery - vector a deque. Ty se liší pouze tím, že deque alokuje paměť po částech (takže bude uložen v nesouvislé paměti), zatímco vector vždy alokuje jednu oblast, která je souvislá a při přidávání prvků (tj. zvětšování interního pole) dochází k alokaci nové oblasti paměti, do které je stará paměť překopírována. Kdyby bylo možné alokovat nesouvislý blok, pak by existence obou kontejnerů zároveň postrádala smysl.