This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Core dump constructing a C++ string with NULL
- From: Ian Lance Taylor <iant at google dot com>
- To: Tom Browder <tom dot browder at gmail dot com>
- Cc: GCC-help <gcc-help at gcc dot gnu dot org>
- Date: Thu, 13 Jan 2011 12:59:04 -0800
- Subject: Re: Core dump constructing a C++ string with NULL
- References: <AANLkTin_hTLeBJQfTAyS_-hX4Bq4FoghFNX9tAtBpraK@mail.gmail.com>
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