“单一分配”对于 boost::make_shared 意味着什么

2024-03-06

在boost文档中make_shared http://www.boost.org/doc/libs/1_47_0/libs/smart_ptr/make_shared.html, 它说:

除了方便和风格之外,这样的功能还具有异常安全性和显着性 更快,因为它可以使用对象及其对应的单一分配 控制块,消除了shared_ptr构造开销的很大一部分。

我不明白“单一分配”的含义,什么意思?


“分配”是指通过调用分配器获得的内存块。

通常,创建一个shared_ptr使用指针构造函数为“控制块”分配内存,其中保存引用计数和删除器。那个的副本shared_ptr全部引用相同的控制块,以便它们共享引用计数。因此总共有两个分配——对象本身和由shared_ptr.

如果您创建该对象并且shared_ptr和...一起make_shared,那么只进行一次分配。您可以将其视为具有两个成员的单个结构:

  1. 正在管理的对象
  2. 控制块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“单一分配”对于 boost::make_shared 意味着什么 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 将谷歌地图折线转换为 html 画布线 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我需要将谷歌地图折线显示到 html 画布中 我如何像这样转换坐标 lat 25 5643498 lng 45 34492432 像这样的画
  • 使用 Kotlin 对 Android 10 上的标记进行聚类

    我发现 Google 的开发网站上大多只有 Java 代码示例 Kotlin 的代码示例也很少 这很烦人 所以我不得不在这里问这个问题 我正在尝试设置 ClusterManager 但我没有任何线索说明它应该如何完成 并且没有可以看到的 K
  • 在 Java 中使用 MessageFormat.format() 格式化消息

    我已将一些消息存储在资源包中 我正在尝试按如下方式格式化这些消息 import java text MessageFormat String text MessageFormat format You re about to delete
  • MPI:MPICH2 在 Windows 局域网中安装和编程

    我正在学习MPI 我遵循的第一个教程是here http curveto blogspot in search label Parallel 我在 Windows 7 上使用 MSVC 2010 成功运行的代码是 include mpi h
  • 浏览器支持以双斜杠开头的 URL

    我最近看到一些没有协议的链接 它看起来并不太难理解 我认为这是一个好主意并且非常直观 对于那些不知道的人 请使用类似的 URL example com script js将指向任一http example com script js or
  • 通过反射使用字符串值设置属性

    我想通过反射设置对象的属性 其值为 typestring 因此 举例来说 假设我有一个Ship类 其属性为Latitude 这是一个double 这是我想做的 Ship ship new Ship string value 5 5 Prop
  • 无法连接到远程虚拟机。连接被拒绝。尝试在 Flash Builder 4.7 中调试远程 java 应用程序时

    在某一时刻 远程调试曾经发挥过作用 但对于我的一生 我似乎无法弄清楚是什么破坏了它 我有一个 Flex Java 应用程序 有一个启动 tomcat 服务器的包装器 我修改了wrapper conf文件以包含 Xdebug Xrunjdwp
  • 当波浪号出现在表达式之前时,它有什么作用?

    var attr input textarea indexOf target tagName toLowerCase value innerHTML 我在一个答案里看到过 以前没见过 这是什么意思 is a 翻转其操作数中的所有位 例如 如
  • “pick”函数的 TypeScript 通用类型(结果对象值类型)

    在编写 pick 函数的类型时遇到问题 当仅选择一个键或具有相同类型值的多个键时 一切正常 但是 如果我尝试选择几个键并且它们的值是不同类型 我会收到错误 不太确定我在哪里犯了错误 感谢您的时间 export interface Mappe
  • 传单地图单击更改颜色,然后再次单击时删除

    我正在使用 Leaflet 制作美国地图 并且具有单击功能来放大和更改州的颜色 这可行 但我不能 单击另一个状态时使颜色返回到之前的颜色 目前 每次我点击一个状态 颜色就会改变 并且不会删除之前的颜色变化 这是我的代码 var map L
  • Python - 使用utf-8编码读取和写入csv文件

    我正在尝试读取一个 csv 文件 其标头包含外来字符 并且我遇到了很多问题 首先 我使用简单的 csv reader 读取文件 filename C Users yuval Desktop new resources mk str mkNu
  • 内联表单,缩小以使标签适合左侧

    标题说标签是因为这是我的用例 但显然它可以是任何元素 我想要实现的是以下表单布局 label input another label input third label input 目前我的 HTML 大致如下 省略细节 div overf
  • 将音频样本从 Float32 移位到 SInt16 会导致严重削波

    我对 iOS 及其 C 基础很陌生 但对一般编程并不熟悉 我的困境是这样的 我正在基于复杂 AudioUnits 的应用程序中实现回声效果 该应用程序需要混响 回声和压缩等 但是 只有当我使用特定的时 回声才能正常工作音频流基本描述我的应用
  • 如何保护 Java/Javafx 代码不被最终用户看到?

    我一个人在一家公司做一个项目已经两年多了 该项目是一个非常大的项目 使用 rxtx 与硬件设备进行通信 我使用 Java 8 和 JAVAFX 作为 UI 现在它几乎完成了 我开始搜索如何交付公司将分发给其客户的最终用户应用程序 问题是 我
  • ValueError:字段 admin.LogEntry.user 是使用惰性引用声明的

    我正在开发一个新的 django 项目并坚持迁移 我想创建一个 UserModel 为了做到这一点 到目前为止我做了两件事 1 我制作了AuthUser模型并在下面的类中设置了一个Meta类 In 模型 py class AuthUser
  • safari - jquery - ajax 500 内部服务器错误

    我创建了一个 jquery ajax 调用 它在 Chrome firefox 和 IE 中运行良好 与 Safari 一样 它在响应中给出 500 内部服务器错误 我认为这可能是由于服务器异常所致 但是当我尝试调试时 我发现它根本没有到达
  • SSDT 架构比较锁 SET QUOTED_IDENTIFIER 为 OFF

    我安装了 Visual studio 2012 并安装了 SSDT 版本 11 1 20627 0 一直困扰我的问题之一是 SSDT 项目中的所有存储过程 当尝试使用模式比较将其推送到服务器时 SP 的 SET QUOTED IDENTIF
  • 使用动态规划求解背包

    我正在使用我在此链接中找到的算法来实现背包问题的片段背包问题 http www es ele tue nl education 5MC10 Solutions knapsack pdf I have also attached the sn
  • 无法运行地图示例

    我正在尝试运行谷歌地图例如 但它一直在控制台中给我 WARNING Application does not specify an API level requirement Device API version is 7 Android
  • “单一分配”对于 boost::make_shared 意味着什么

    在boost文档中make shared http www boost org doc libs 1 47 0 libs smart ptr make shared html 它说 除了方便和风格之外 这样的功能还具有异常安全性和显着性 更