The Next Great Migration: From C++ to Standard C++
By Al Stevens
Dr. Dobb's Journal September 1998
<b>(a)</b> #include <new> char buffer[8192]; // ... MyClass* pMC = new (buffer) MyClass; // new uses buffer, not heap <b>(b)</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 <b>(c)</b> void MyClass::operator delete(void* p, bool frbuffer) { if (!frbuffer) MyClass::operator delete(p); } <b>(d)</b> pOC1->~MyClass(); operator delete(pOC1, true);
Example 3: Placement new and delete.
Copyright © 1998, Dr. Dobb's Journal