c++ - boost::make_shared 现在过时了吗?

标签 c++ boost

boost::make_shared 现在过时了吗?在 1.35 中没有找到它的定义。

最佳答案

std::make_shared 在 C++11 中也可用。请注意,make_shared 不仅仅是一个便利功能。看看下面的代码片段:

make_shared<foobar>(1, 2);
shared_ptr<foobar>(new foobar(1, 2));

两个语句都创建一个 foobar 对象并构造一个 shared_ptr。但是,前者避免了为共享计数器分配内存,因为单个内存块将用于计数器和 foobar 对象。这对于第二个语句是不可能的,因为 foobar 的内存是在构造 shared_ptr 之前分配的。

我想说的是:不,make_shared 并没有过时,因为它提供了非常有用的优化。

关于c++ - boost::make_shared 现在过时了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1712701/

相关文章:

c++ - 将 boost 类型删除类型转换回原始类型给我 boost::bad_any_cast

c++ - 处理套接字断开连接。 boost/Winsock

c++ - 从微秒构建 boost::posix_time::time_duration

c++ - 如何从 boost karma 生成 C++ 数组?

c++ - 了解 C++ 结构大小

c++ - 使用位掩码组合枚举值

c++ - vector 中对象的初始化

c++ - 使用变量定义数组的大小

android - 使用dlopen动态加载x86 android .so文件,出现 undefined symbol 错误

c++ - boost::interprocess 中 win32 文件锁定的模拟是什么?