In order to implement a deep clone operation, the elements themselves have to implement some sort of 'clone' method, but not all Curl objects have such a method. Java has a 'clone' method in its Object class, but Curl does not. Even so, Java's clone method throws an exception by default, so there is no guarantee that any given Java object is cloneable. Also, as far as I know, Java's arraycopy function actually does a shallow copy, not a deep copy.
In any case, iterating over the array and copying each element is what you need to do, and the overhead is no different than it would be for doing a deep copy in Java or any other language. So assuming your array element type 'E' implements a 'clone' method, you would write:
def new-array = {new {Array-of E}, efficient-size = my-array-1.size}
{for e in new-array do
{new-array.append {e.clone}}
}
or you could just do an array clone, and then write over the elements:
def new-array = {my-array-1.clone}
{for e key i in new-array do
set new-array+ = {e.clone}
}