Since #7148 our C api allows creating arrays from buffers. The issue is, we copy the underlying memory, because we don't know how it was allocated. we need to exposed a owned memory block with associated deleter and alloc to construct arrays from it.