关于c++中的new, 主要分为operator new
和 new operator
.
new operator就是标准new:
operator new是函数:
placement new是重载operator new的一个标准, 全局的版本, 不能被自定义版本代替.
void* operator new(size_t, void* pointer) {
return pointer;
}
placement new的执行忽略了size_t参数, 只返还第二个参数, 其结果是允许用户把申请的对象放在一个指定的内存空间, 用法如下:
auto buffer_add = malloc(sizeof(Foo) + sizeof(int));
auto foo = new(buffer_add) Foo;