Without the ref only the last element of __devicenames is stored in _devicenames: The temporary is deleted at the end of the for body, therefore the pointer to the c_str is no longer valid and might be reused by the implementation. By using a reference in the for head the c_str does not return a ref to the temporary but to the original array wich's lifetime is till the end of the function.
3.9 KiB
3.9 KiB