Товарищ по фамилии Realloc делает то же самое : Если для расширения массива непрерывной памяти не хватает, будет выделено место в непрерывной области памяти, а "старая" область памяти освободится. Текущие данные перепишутся на новое место.
Если места хватает, то Delphi по SetLength тоже просто добавит новые эламенты в конец текущего.
Это если мне не изменяет мой склероз...
А вот того, что, как выше утверждалось,
Вон с теми же динамическими массивами : если не знаешь, что они работают на разбросанных по оперативке кусочках памяти и указателях
я не знал.