...
int* p = AllocArrayAndOthers(......);
...
delete [] p;
...
[code]
Of course, you may wrap this pointer into the proper class (for safety) and return this class object, but it's the other story. The key point here: only dynamic allocation creates long-lived objects on the fly...