【发布时间】:2021-06-18 21:01:03
【问题描述】:
假设我有这样的代码:
class Foo
{
private:
int x;
public:
void* operator new(size_t size);
void operator delete(void* p);
};
int main() {
auto ptr = std::shared_ptr<Foo>(new Foo());
return 0;
}
shared_ptr 将创建单独的 control-block 和 object-block。我想对象块的内存将使用Foo::operator new() 创建。 控制块 的内存是使用::operator new() 或Foo::operator new() 创建的吗?如果是make_shared,是否会使用Foo::operator new() 分配整个单块内存?
【问题讨论】:
-
shared_ptr永远不需要自己分配对象块。你传入了一个指针,它可以直接使用它。
标签: c++ shared-ptr new-operator