basic_ostringstream::str 悬空指针

2024-03-20

最近我发现了以下代码中的错误:

ostringstream o;
o << "some string";
const char* s = o.str().c_str(); // empty string instead of expected "some string"

cppreference.com 对此进行了解释:str 返回的底层字符串的副本是一个临时对象,将在表达式末尾被破坏,因此直接对 str() 的结果调用 c_str() (例如在 auto *ptr = out.str() 中) .c_str();) 产生悬空指针。

我修复这个错误没有任何问题,但是,我在项目中有很多地方,看起来像这样:

ostringstream o;
o << "error description";
throw my_exception(o.str().c_str());

...

my_exception::my_exception(const char* s) :
    message(s)     // message is std::string
{}

此代码是否具有未定义的行为,如第一个代码片段?


不,消息是一个 std::string,因此您此时会获取 char 缓冲区内容的副本。

临时的持续时间是您调用它的函数的范围 - 在本例中是构造函数。

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

basic_ostringstream::str 悬空指针 的相关文章

  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 如何修复“超出最大调用堆栈大小”AngularJS

    我正在使用 AngularJs 和 Ui Router 我试图设置两个不同的主页 一个用于已登录的用户 另一个用于未登录的用户 但我收到以下错误 RangeError Maximum call stack size exceeded I r
  • 如何为 VS 扩展嵌套工具菜单按钮?

    我正在构建我的第一个 VS 扩展 因此我目前在该领域的技能相当于遵循教程和提出问题 该扩展用于加密 解密一部分web configWeb 应用程序项目的文件 我有 2 个命令 目前按钮设置在 vsct文件如下
  • 无法安装或运行应用程序 - System.Windows.Interactivity 版本 4.0.0.0

    我完全被困住了 搜索了又搜索了 我有一个对 System Windows Interactivity 版本 4 5 0 0 的引用 当我通过 ClickOnce 释放系统时 系统未安装并报告以下错误 无法安装或运行该应用程序 该应用程序需要
  • React-router-dom (v6) 与 Framer Motion (v4)

    我正在尝试将我的react router dom更新到v6 但它似乎会导致成帧器运动AnimatePresence出现问题 特别是退出过渡 在 App js 中 import Routes Route from react router d
  • 将项目添加到 Listview 控件

    我有一个listview在 C 中 具有三列 视图是详细信息 我需要向每个特定列添加一个项目 但我很难做到这一点 我已经尝试了几件事 这是我到目前为止所得到的 感谢您提前提供的任何帮助 Add the pet to our listview
  • 如何将上传的图像添加到对象数组中?

    我正在创建一个专辑网站只是为了学习 Javascript 我有输入框来添加专辑的标题 艺术家和年份 当按下 添加专辑 时 它会将此信息插入到名为 albumList 的对象上的数组中 然后在列表元素中显示该信息 我想知道是否可以允许用户上传
  • Angular2,TypeScript,如何读取/绑定属性值到组件类(在 ngOnInit 中未定义)[重复]

    这个问题在这里已经有答案了 有人可以建议我如何读取 绑定属性值到 component 类 这在 ngOnInit 方法中似乎未定义吗 这是一个 plunker 演示 http plnkr co edit 4FoFNBFsOEvvOkyfn0
  • 统计模型逻辑回归收敛问题

    我正在尝试在大型设计矩阵 约 200 列 上的 statsmodels 中运行逻辑回归 这些特征包括大量交互 分类特征和半稀疏 70 整数特征 虽然我的设计矩阵不是actually病态的 似乎有些接近 根据numpy linalg matr
  • kv 语言的 Kivy 屏幕管理器参考

    我正在尝试制作一个主菜单 让我在单击按钮时切换屏幕 但我不知道如何从按钮引用管理器 我有一个主菜单页面的设置 在 kv 文件中
  • Rails // 白天按时区查询

    在使用时区方面不太有信心 在这方面寻求一些帮助 我有一个 cron 作业 每隔一段时间检查一次用户 它调用 rake 任务 在此 rake 任务中 我查询用户并根据条件向每个用户发送一封电子邮件 我有每个用户的时区信息 我想对那些仅返回当前
  • Gnuplot BibTeX 引用

    好吧 这不是一个正确的编程问题 但也许答案会对其他人有所帮助 我一直在尝试寻找合适的 BibTeX 条目gnuplot 包含在科学出版物中 我只是不想引用任何指南书 而是引用实际的软件 有谁有想法或曾经使用过吗 我希望找到类似的东西cita
  • fread():读取以 \r\r\n 作为换行符的表

    我在文本文件中有制表符分隔的表 其中所有行都以 r r n 0x0D 0x0D 0x0A 如果我尝试读取这样的文件fread 它说 行结尾为 r r n R 的 download file 似乎添加了额外的 r 在 Windows 上的文本
  • Java Velocity引擎初始化问题

    我写了一个包含邮件构建部分的库 该邮件构建部分使用了 Velocity mailbuilder 类如下 public class mailBuilder public void initialize throws Exception Pro
  • 我们如何测试某物是否是参考?

    现在我正在使用这个 instance clojure lang IDeref x 但我怀疑可能有更好 更惯用的方法来做到这一点 这是不正确的 您正在检查对象 x 是否实现了 IDeref 接口 这仅仅意味着您可以使用 符号取消引用该对象 你
  • xsd.exe 生成的类可为空值

    我一直在使用 xsd exe 生成一个用于反序列化 XML 的类 我在源 xsd 中有不需要的十进制值
  • Angular 5 视图超时后不更新

    我在 Angular 5 中设置了一个超时 在一段时间后隐藏元素 this showElement true setTimeout function console log hide this showElement false 2000
  • 适用于 Mac 的单击一次部署

    正如标题所述 是否有与 Mac 上的 Click Once 应用程序部署等效的方法 我问这个问题是因为 Lion 附带的 Safari 版本已删除 DMG 磁盘映像 文件作为下载后打开的 安全文件类型 我工作的公司有一个相当特殊用途的应用程
  • 通过 BlackBerry 发送 POST 数据后获取 HTML 响应

    我需要在发送 POST 数据后从 URL 读取 HTML 响应 我已经有以下两个函数 但我不知道如何组合它们 以便我可以发送 POST 数据并获取响应 此函数获取标准 HTML 响应 public static String getData
  • Java Rest api 需要等待才能处理

    我有一个 Java Rest API 物联网设备将使用它来发送数据 每个设备都有一个时间段 比如 15 秒 与 API 进行通信 在该时间段内 可以有多个具有相同数据集的消息 我想要做的是 当 API 从设备接收到新消息时 它会等到时间段结
  • basic_ostringstream::str 悬空指针

    最近我发现了以下代码中的错误 ostringstream o o lt lt some string const char s o str c str empty string instead of expected some string