By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
454,507 Members | 1,758 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 454,507 IT Pros & Developers. It's quick & easy.

Is there any way to disable global operator new?

P: n/a
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
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. :)

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.
Nov 16 '08 #1
Share this Question
Share on Google+
1 Reply


P: n/a
go****@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.
Nov 16 '08 #2

This discussion thread is closed

Replies have been disabled for this discussion.