Re: overload operator new with a spcialized memory manager instance
On 2008-08-27 15:25:44 -0400, "Maximus" <maximus@microsoft.com> said:
I am trying to find a way to overload operator new of a class to use a
specialzied memory manager. In my design multiple memory managers exist. I
need to pass the instance of a memory manager into operator new. In ANSI C,
it is quite simple, like this:
type_t* ansi_c_init(MemoryManager* m)
{
type_t* a = (type_t*)->alloc_bytes(sizeof(type_t));
a->memory_manager = m;
}
According to my read, the new() overload is actually a static method and can
not call any members. So my question is, it is a backward in C++? Is it even
possible to customize memory allocation with a specialized memory manager?
void *operator new(size_t size, MemoryManager& m)
{
// whatever
}
FunkyMemoryManager mm;
new (mm) int(3); // calls operator new(size_t, MemoryManager&)
--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The
Standard C++ Library Extensions: a Tutorial and Reference
(www.petebecker.com/tr1book)