placement new and delete
What is the right method to delete all the memory allocated here? const char* charString = "Hello, World"; void *mem = ::operator new(sizeof(Buffer) + strlen(charString) + 1); Buffer* buf = new(mem) Buffer(strlen(charString)); delete (char*)buf; OR const char* charString = "Hello, World"; void *mem = ::operator new(sizeof(Buffer) + strlen(charString) + 1); Buffer* buf = new(mem) Buffer(strlen(charString)); delete buf; or are they both same? The correct method is: buf->~Buffer(); ::operator delete(mem); You can only delete with the delete operator what you received from the new operator . If