The Next Great Migration: From C++ to Standard C++

By Al Stevens

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);

Example 3: Placement new and delete.

Back to Article


Copyright © 1998, Dr. Dobb's Journal