Marcel Müller
11/16/2008 4:28:00 PM
google@pedriana.com wrote:
> We need to be able to disable global operator new at compile time. We
> are developing a large library and need to control all memory
> allocation and cannot have a mistake whereby a mistaken use of global
> operator new creeps in. It is not feasible to solve this via
> implementing our own global operator new which asserts(false), as
Patch a you standard library for testing purposes and remove the global
operator new. You will get a linkage error in case you are calling new
from some point.
But I think that the standard library itself requires this operator. So
you might get some additional errors from there.
> there is no practical way to test all paths of execution. This is a
> large and complex library, to say the least. In fact there's a chance
> you are using it to read this message. :)
While this is not uncommon, you may run into other troubles anyway.
> Due to the design of C++ and its special/unusual treatment of new/
> delete, I can think of no way to accomplish this, nor can I think of
> an alternative means to accomplish what we need. #defining new away
> doesn't work because placement new and class new still need to work.
I wonder why it is not possible to replace the global operators in a way
that they have a meaningful implementation of your memory management.
Otherwise you might derive all your base classes from a helper class
that overloads new and delete. Of course, this will not work for PODs.