首页 > 试题广场 >

关于下面C++11的std::shared_ptr说法正确的

[不定项选择题]
关于下面C++11的std::shared_ptr说法正确的有?
struct Test{};
std::shared_ptr<test> p1 = std::make_shared<test>();//1</test></test>
std::shared_ptr<test> p2 (new Test);//2</test>
  • 上面的代码1语句只会进行1次内存申请,2语句则会2次内存申请
  • 使用new申请内存方式不会造成内存泄漏
  • 构造函数是保护或私有时,无法直接使用 make_shared
  • 使用 make_shared,对象的内存可能无法及时回收
  • 如果可以,最好把一个原生指针给多个shared_ptr管理,节省内存分配的资源
new Test 会申请两次,一次引用技术,一次new 对象,但是用make_shared只会申请一次空间,引用计数和对象内存都给申请出来。
发表于 2022-03-21 11:26:56 回复(0)