【发布时间】:2011-10-10 16:06:12
【问题描述】:
删除这里分配的所有内存的正确方法是什么?
const char* charString = "Hello, World";
void *mem = ::operator new(sizeof(Buffer) + strlen(charString) + 1);
Buffer* buf = new(mem) Buffer(strlen(charString));
delete (char*)buf;
或
const char* charString = "Hello, World";
void *mem = ::operator new(sizeof(Buffer) + strlen(charString) + 1);
Buffer* buf = new(mem) Buffer(strlen(charString));
delete buf;
还是两者都一样?
【问题讨论】:
-
虽然这是一个完全有效的问题,但更简单的方法是在
Buffer内重载operator new和operator delete以分配额外空间,然后编写类似new (strlen(charString) + 1) Buffer;
标签: c++ visual-c++ new-operator placement