I think of a dynamic array as a value-type consisting of a pointer to the actual data and a length, which gets copied. The data pointing to will continue to live. The pointer and length might disappear from the stack or get copied. I think there is no problem.