I'd like to define a function such that I return a string and a boolean indicating whether the result is valid. Like this:
bool getStringOrTimeout(String *s) {
...
if (timed_out) {
return false;
} else {
*s = String(<some value>);
return true;
}
}
Is this going to cause a memory problem because the string is allocated on the stack and deallocated when it leaves scope, or is this okay?
asked Mar 12, 2016 at 21:20
1 Answer 1
You are better off passing the string by reference, like this:
bool getStringOrTimeout(String & s)
{
if (timed_out)
return false;
s = "foo";
return true;
}
That means the caller's string will be modified. And you no longer need to pass down a pointer to a string.
answered Mar 13, 2016 at 0:34
lang-cpp
*s = "foo";