Todo objeto que se crea en Delphi está referenciado por la variable que se usa.
Código Delphi
[-]
var miobjeto:Tobjecto;
begin
miobjeto := TObjeto.Create;
Aquí, la variable miobjeto es un puntero hacia la zona de memoria donde se ha creado la instanciación de la clase (que vaya usted a saber donde es).
Cuando hacemos algo así:
Código Delphi
[-]
var a : array [0..1] of TObjeto;
miobjeto:Tobjeto;
begin
miobjeto := Tobjeto.create;
a[0] := miobjeto;
end;
En realidad estamos copiando el puntero a la posición cero del array "a". La zona de memoria donde reside el objeto, no se ha tocado para nada.
En tu caso particular, ocurre lo mismo:
Código Delphi
[-]
ArrayObjetos[tamano]:=TObjeto.Create;
primero se crea el objeto en memoria, y la dirección donde reside, se copia en la posición "tamano" del array.
La respuesta a tu pregunta, por tanto, es copiar el puntero al interior de la clase, pero, no sé si se tratará de eso.
Saludos