@ t-nelson, it is about to style, not about concrete problem.
any time i see function that return pointer, i lose a time on documentation to understand how exactly it is expected from me to free that pointer instead of being concentrated on concrete problem domain. any time my first question is exactly "how the hell i have to free that (dangling) pointer and what extreme care i have to put on it".
with other words, by putting std::string or similar type in return, you free caller from the need to understand implementation of calee.