By Jonathan Erickson

Dr. Dobb's Journal May 1997

  class Foo {
  public:
    Foo();
    ~Foo();
  };
  Foo *pBar = (Foo*) malloc(10*sizeof(Foo));
  for (int i = 0; i < 10; i++) 
    new (pBar+i) Foo;// "placement new"
  pBar = (Foo*) realloc(pBar, 11*sizeof(Foo));
    new (pBar+10) Foo;    // "placement new"
  for (int i = 9; i >= 0; i--)
    (pBar+i)->Foo::~Foo();
  free(pBar);

Example 1: Poul's code as is should be written.

Back to Article


Copyright © 1997, Dr. Dobb's Journal