Dr. Dobb's Journal September 1998
(a)
#include <new>
char buffer[8192];
// ...
MyClass* pMC = new (buffer) MyClass; // new uses buffer, not heap
(b)
char buffer[8192];
void* MyClass::operator new(size_t nSize, bool frbuffer)
{
if (frbuffer)
return buffer;
return new char[nSize];
}
MyClass* pOC1 = new (true) MyClass; // new uses buffer, not heap
MyClass* pOC2 = new (false) MyClass; // new uses heap, not buffer
(c)
void MyClass::operator delete(void* p, bool frbuffer)
{
if (!frbuffer)
MyClass::operator delete(p);
}
(d)
pOC1->~MyClass();
operator delete(pOC1, true);