String is special in the way its data is exchanged through the API. Through calls, strings are passed as plain, null-terminated UTF-16 character strings. In addition, strings passed back as return values from engine API functions are considered to be owned by the API layer itself. The rule here is that such a string is only valid until the next API call is made. Usually, control layers will immediately copy and convert strings to their own string type.