This is a memory allocation issue that I\'ve never really understood.
void unleashMonkeyFish() { MonkeyFish * monkey_fish = new MonkeyFish(); std::string
You could make the string in unleashMonkeyFish static but I don't think that really helps anything (and could be quite bad depending on how this is implemented).
I've moved "down" from higher-level languages (like C#, Java) and have hit this same issue recently. I assume that often the only choice is to copy the string.