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