删除此处分配的所有内存的正确方法是什么?
const char* charString = "Hello, World";
void *mem = ::operator new(sizeof(Buffer) + strlen(charString) + 1);
Buffer* buf = new(mem) Buffer(strlen(charString));
delete (char*)buf;
Run Code Online (Sandbox Code Playgroud)
要么
const char* charString = "Hello, World";
void *mem = ::operator new(sizeof(Buffer) + strlen(charString) + 1);
Buffer* buf = new(mem) Buffer(strlen(charString));
delete buf;
Run Code Online (Sandbox Code Playgroud)
还是他们都一样?
为什么C++没有直接对应于贴图新的贴片删除,即调用析构函数并调用适当的贴片删除操作符?
例如:
MyType *p = new(arena) MyType;
...
//current technique
p->~MyType();
operator delete(p, arena);
//proposed technique
delete(arena) p;
Run Code Online (Sandbox Code Playgroud)