In my understanding, I think there is two ways to deallocate the memory when we use placement new. For example,

class Foo;
char* p = new char[16];

Foo* pFoo = new(p) Foo;

...

At the end, we might use either pFoo->~Foo() or delete[] p. Is my understanding correct? Thanks for your inputs.