Manipulating array descriptors from C?

See this answer:

You can store a copy of the base_addr in your struct, but you’re still at risk of your C struct becoming invalid due to a deallocate statement or the end of a scope, or the creation of an array temporary. Essentially you can’t have two sources of truth as one is bound to become corrupt at some point.