"Martin Ettl" <ettl.martin@xxxxxx> writes: > yes i know. This is a rather unusual case. It seems to me that there is a signed integer variable used for allocation (new[signed integer] and malloc (signed integer)) in the implementation of gcc/g++... why not using an unsigned integer and this error can be avoided. But this is just a thought.... Actually, that's a good point. Both malloc and new take unsigned arguments, and I do get a warning using -Wconversion. -Wconversion is not included in -Wall because it generates too many false positives for existing code. Ian > -------- Original-Nachricht -------- >> Datum: Thu, 02 Jul 2009 14:02:43 -0700 >> Von: Ian Lance Taylor <iant@xxxxxxxxxx> >> An: "Martin Ettl" <ettl.martin@xxxxxx> >> CC: gcc-help@xxxxxxxxxxx >> Betreff: Re: missing g++ warning about bad allocation > >> "Martin Ettl" <ettl.martin@xxxxxx> writes: >> >> > compiling the following code with g++-4.4.0 on Ubuntu Linux (Jaunty): >> > >> > >> > int main() >> > { >> > double * d = new double[-100]; >> > } >> > >> > compiles without warning. I used following compilation flags: (-W -Wall >> -Wextra -pedantic). >> > >> > Exectuting the compiled programm gives: >> > >> > ./test >> > terminate called after throwing an instance of 'std::bad_alloc' >> > what(): std::bad_alloc >> > Aborted >> > >> > Is there a reason why g++ does not warn about this? >> >> I doubt there is an explicit reason that there is no warning. I expect >> that nobody has ever been moved to add a warning for such an unusual >> case. gcc also does not warn about malloc(-100). >> >> Ian