C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 我什么时候应该更喜欢`shared_ptr`到`make_shared`?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Initializing shared_ptr member variable,new vs make_shared?                                    2个
正如 Difference in make_shared and normal shared_ptr in C++的答案所指出的那样,make_shared在大多数情况下都优于shared_ptr.

那么为什么C标准一起定义shared_ptr和make_shared?是否有任何情况我应该更喜欢shared_ptr到make_shared,甚至我只能使用shared_ptr但不能使用make_shared?

解决方法

其中一种情况是 std::make_shared不支持指定自定义删除器.

你只能使用std::shared_ptr的构造函数来完成它,例如

std::shared_ptr<Foo> sh5(new Foo,[](auto p) {
   std::cout << "Call delete from lambda...\n";
   delete p;
});

一个问题就像链接的帖子所解释的那样,std :: make_shared只对控制块和指向的对象执行一次分配.这意味着在对象被销毁之后,它占用的内存可能不会立即被释放.这可能会导致一些内存使用问题.

大佬总结

以上是大佬教程为你收集整理的c – 我什么时候应该更喜欢`shared_ptr`到`make_shared`?全部内容,希望文章能够帮你解决c – 我什么时候应该更喜欢`shared_ptr`到`make_shared`?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。