Thanks. Yeah, that's it. Put in NEWEXCP and now I get my std::exception routine called with "bad allocation."
Geez, IBM -- the Language Reference and the Library Reference are in conflict with each other and both incomplete. Both should reference LANGLVL(NEWEXCP). Also #pragma operator_new which claims the default is throwsexception -- the default actually is returnsnull. Only a couple of hours wasted debugging a S0C4. Charles -----Original Message----- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of David Crayford Sent: Wednesday, January 21, 2015 5:42 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: What am I missing about C++ new[] failure? I got burned by the same problem years ago. z/OS C++ does not throw bad_alloc() by default for compatibility reasons (brain damaged). To turn it on specify the compiler option LANGLVL(NEWEXCP). On 22/01/2015 9:29 AM, Charles Mills wrote: > I have a C++ program in which I am trying to allocate an > unreasonably-large character array with new[]. I know it's > unreasonably large - I'm a developer testing something. It's 6.3MB -- > not ridiculous, but in excess of the memory available (apparently). > > It appears to me that new is simply returning a NULL pointer, with no > error indication. That seems inconsistent with the C++ manual which > says "If you do not specify your own set_new_handler() function, new > throws an exception of type std::bad_alloc." I have an exception > handler that is known to work generally and it is not getting called. I do not call set_new_handler(). > > Am I missing something? Do others know that new generally fails as > documented? ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN