测试shared_ptr是否为NULL

2024-03-18

我有以下代码片段:

std::vector< boost::shared_ptr<Foo> >::iterator it;
it = returnsAnIterator();
// often, it will point to a shared_ptr that is NULL, and I want to test for that
if(*it)
{
    // do stuff
}
else // do other stuff

我测试正确吗? boost 文档说,shared_ptr 可以隐式转换为 bool,但是当我运行此代码时,它会出现段错误:

Program received signal SIGSEGV, Segmentation fault.
0x0806c252 in boost::shared_ptr<Foo>::operator Foo*
boost::shared_ptr<Foo>::* (this=0x0)
    at /usr/local/bin/boost_1_43_0/boost/smart_ptr/detail/operator_bool.hpp:47
47              return px == 0? 0: &this_type::px;

是的,您上面的代码是正确的。shared_ptr可以隐式转换为 bool 以检查是否为空。

你遇到的问题是你的returnAnIterator()函数返回无效的迭代器。或许它正在回归end()对于某些容器,这是一个past容器的末尾,因此不能像您所做的那样取消引用*it.

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

测试shared_ptr是否为NULL 的相关文章

随机推荐

  • PHP cURL 和 SSL 的奇怪超时

    当我尝试访问 Amazon Cloudfront 时 将 cURL 与 PHP 结合使用时遇到奇怪的超时 这似乎会影响所有失效请求 创建发行版等 cURL 要么报告接收到 0 字节 要么报告接收到很少的字节 然后超时 Operation t
  • 从脚本返回的值未分配给 jenkins 声明性管道阶段中声明的变量

    我正在努力添加用于自动化测试的詹金斯声明式管道 在测试运行阶段 我想从日志中提取失败的测试 我正在使用常规函数来提取测试结果 该函数不是詹金斯管道的一部分 这是另一个脚本文件 该函数工作正常 它构建了一个包含失败详细信息的字符串 在管道阶段
  • 多个 JVM 与单个应用程序服务器

    我正在处理一个系统 该系统为每个客户在其自己的 JVM 中运行一个 Java 应用程序 我们有大约六台专用服务器 现在总共运行着近 100 个 JVM 以及用于管理这些 JVM 的自定义脚本集 这个设置在这一点上确实显示出了它的年龄 管理如
  • 将glade文件与程序g++链接

    Glade 文件和程序文件可能会变得有点混乱 当您希望程序可移植时 这会成为一个问题 有什么方法可以将您的程序与林间空地文件绑定吗 源代码 未完成但正在运行的项目 https github com caelwithcats valuator
  • 如何在 Erlang 中执行系统命令并使用 os:cmd/1 获取结果?

    当我尝试执行以下返回错误或在 Windows 上不退出的命令时 我总是得到空列表而不是作为字符串返回的错误 例如 I get os cmd blah 而不是类似的东西 command not found os cmd blah 在 Linu
  • Git 在交互式变基中添加所有提交消息

    我运行了交互式变基以提交abcdef git rebase i abcdef 在编辑器 Vim 中我改变了所有pick hash线路到 reword hash PREFIX Original commit message使用这个 vim 命
  • 使用 fetch 进行基本身份验证(或任何身份验证)

    找不到任何相关文档 因此在我深入研究代码之前 是否有人知道在使用 fetch 发出 REST 请求时如何使用基本身份验证 https github com github fetch https github com github fetch
  • 在一个线程中锁定互斥体并在另一个线程中解锁它

    这段代码正确且可移植吗 void aThread void while conditionA pthread mutex lock mutex1 do something pthread mutex unlock mutex2 void b
  • Require.js 加载应用程序的所有资源,包括 Polymer

    我正在为一个大型 多开发人员项目构建应用程序框架 我很喜欢结合使用 Require js 和 Angular 来管理依赖关系和类加载的想法 但现在我也想使用 Polymer 因为它非常酷 我如何使用 require js 加载聚合物元素库
  • MySQL插入不存在的地方/如果不存在

    我尝试过以下查询 INSERT INTO surfed site user site VALUES 123 456 WHERE NOT EXISTS SELECT site FROM surfed site WHERE site 456 但
  • 从工作表中获取时间时,Google 脚本会增加 +1 分钟

    var pickupTimeOld wysylka getRange C5 getValue var pickupTime Utilities formatDate pickupTimeOld GMT 1 HH mm 我在从谷歌表格中获取值
  • 如何通过Mercurial将代码推送到多个服务器?

    我们如何将代码推送到多个服务器 我们有许多服务器需要具有相同的代码副本 很难推送到单独的服务器 我知道 Mercurial 有钩子 但它们都没有给出正确的解决方案 在您的中央服务器中 您创建一个变更组 http hgbook red bea
  • NodeJS + Mongoose 连接超时

    所以我读过猫鼬司机 http mongoosejs com NodeJS 会缓存查询 直到连接到 MongoDB 无超时 但是当数据库崩溃时 应该可以向用户发送消息 那么让我们看一下这个 NodeJS 代码 Users find funct
  • 从资源文件夹中获取以前缀开头的所有文件名

    我们如何从资源文件夹中获取以前缀开头的所有文件名 您可以通过调整以下代码来实现 NSArray files NSFileManager defaultManager contentsOfDirectoryAtPath NSBundle ma
  • content_scripts 匹配“chrome-extension://*/*”有效吗?

    我想在带有 chrome extension URL 的 iframe 上运行内容脚本 我在从文档中复制的 manifest json 中添加了一行http code google com chrome extensions match p
  • 如何以流畅的动画从页面视图中删除页面?

    我对颤振动画还是新手 我正在尝试制作一个 PageView 当您用动画按下它时它会被关闭 我有这个代码 class Carroussel extends StatefulWidget override CarrousselState cre
  • 使用 install.packages 安装软件包时 RStudio 崩溃

    我正在尝试在 RStudio 中安装软件包 但无法做到这一点 安装软件包失败 但出现错误或警告 我之前在安装 texlive full 时遇到了问题 并且可能对我的 etc apt sources list d 文件做了一些尴尬的事情 我遇
  • Linux 上的 C++ IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • avd 的模拟器进程已终止

    通过 Android Studio 启动 Android 模拟器时遇到问题 当我尝试这样做时 我收到下一条警告消息 avd 的模拟器进程已终止 我检查了日志 主要表达式是 AVD 系统路径损坏 检查您的 ANDROID SDK ROOT 值
  • 测试shared_ptr是否为NULL

    我有以下代码片段 std vector lt boost shared ptr