[lug] new operator in C++

D. Stimits stimits at idcomm.com
Sat Apr 27 14:02:14 MDT 2002


Stephen Queen wrote:
> 
> In using the new operator in C++ I cannot find whether it is guaranteed
> to initialize the new memory to zero or not. In playing with it, it
> looks like it does, but that might be coincidence. Does anyone know a
> source of information on the net regarding this? Another question
> regarding sources of information on C++. man has section 3 which is a
> good source of information for regular C. Does anyone know of anything
> like that for C++? It sure would come in handy now and then.

Older compilers behaved similar to malloc, and returned NULL if failed.
Newer ones (g++) will throw an exception. To override this and get older
NULL behavior, you can create your own custom allocator, or else do the
easy thing, use the nothrow argument. E.G.:
  myClass* oTheClass = NULL;
  oTheClass = new(nothrow) myClass;
  assert(oTheClass);


D. Stimits, stimits at idcomm.com

PS: If in doubt, just use (nothrow) and see if the compiler
complains...if it doesn't, then you have a compiler that supports
exception throwing for failures of new.



More information about the LUG mailing list