Массив данных - это целый блок памяти, кратный количеству ячеек массива и размеру одной ячейки (число ячеек * размер одной ячейки = размер массива). Память под массив выделяется программой во время её загрузки, т.е. требуемый размер должен быть известен заранее, ещё на этапе написания программы.
То, что у тебя Aa[номер] - это не сам экземпляр класса, а лишь указатель на него (размер указателя заранее известен, а сам указатель должен иметь значение nil, хотя наверняка там мусор будет). Конструктор класса (TA.Create) после создания нового экземпляра возвращает указатель на него, и мы его сохраняем (можно не сохранять...) в заранее описанной переменной для последующего обращения к экземпляру.
Сам экземпляр помещается в любом свободном участке памяти.
Можно, например, описать переменную p:pointer и присваивать ей aa[номер] или наоборот, потому что по сути и то, и другое - просто указатели.
Quote (Kventen)
Или в памяти в этом случае создается последовательная цепь указателей на объекты, а сами объекты разбрасываются в памяти произвольно?
Это всё происходит в любом случае. В разделе var описываются переменные-указатели (если нужны), а экземпляры создаются с помощью конструктора класса.