gpt4 book ai didi

c++ - 创建对象后创建 shared_ptr

转载 作者:太空狗 更新时间:2023-10-29 20:04:23 25 4
gpt4 key购买 nike

有区别吗:

Foo *foo = new Foo();
shared_ptr<Foo> sp(foo);
_fooVector.push_back(sp);

shared_ptr<Foo> sp(new Foo());
_fooVector.push_back(sp);

根据栈和堆。在所有示例中,我都可以找到 new 用于创建智能指针的同一行。所以我想知道第一个例子是否有效。

最佳答案

第一个示例如果有效,但使用 make_shared 更安全且更正确。

shared_ptr<Foo> sp = make_shared<Foo>();

在您的第一个示例中 - 您分配内存,使用该内存初始化指针,创建 shared_pointer(shared_ptr 现在拥有内存)然后将拷贝推送到 vector )。在第二个示例中 - 您分配内存,使用此内存初始化 shared_ptr c-tor 的参数,然后像第一个示例一样。

关于c++ - 创建对象后创建 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20267709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com