Core dump constructing a C++ string with NULL
Ian Lance Taylor
iant@google.com
Thu Jan 13 20:59:00 GMT 2011
Tom Browder <tom.browder@gmail.com> writes:
> It would be nice if this would construct an empty string:
>
> #include <string>
> std::string s(0);
>
> At the moment that gives a core dump.
>
> Is that defined behavior according to the standard? If not, what
> about a g++ enhancement?
The standard says that you may only pass a valid pointer to the
std::string constructor. You are passing an invalid pointer, so your
code is undefined.
As to whether libstdc++ should check for NULL, that is a perennial
question: should we slow down the library a tiny bit for everybody in
order to do better handling of an undefined case for those who find it
more convenient? There is no clearly correct answer.
Ian
More information about the Gcc-help
mailing list