c++ - string_view 中如何推导出悬空指针?
问题描述
该参考说明第二个示例产生了一个悬空指针。如何在第二个表达式中创建一个悬空指针,而不是在第一个表达式中?
std::string_view good("a string literal"); // OK: "good" points to a static array
std::string_view bad("a temporary string"s); // "bad" holds a dangling pointer
另外,s
字符串后面的字符是什么?
解决方案
有s
一个用户定义的文字运算符产生一个std::string
.
两行之间的区别在于,这一行是good
指向string_view
字符串文字,而字符串文字具有静态生命周期(它们在整个问题中持续存在)。bad
一个是string_view
指向一个临时的,string
并且该临时拥有它的数据 - 所以当临时被销毁时(在行尾)它会带走它的数据,我们最终bad
指向被破坏的内存。
推荐阅读
- mongodb - Mongodb聚合按$match选择记录并在满足查询时包括其他记录?
- typescript - 如何提示该函数检查变量是否未定义?
- serial-port - 在Linux Uart(串行通信)中,我们可以改变数据包之间的时间间隔吗
- jenkins - Jenkins:如何通过脚本使用 ssh publickey 配置初始管理员?
- sql - oracle SUBSTR 到 postgres SUBSTR 函数
- amazon-web-services - Amazon Connect 聊天队列超时
- jsp - 用于打开网络共享文件的 href 链接不适用于 linux 中的 tomcat V-9.0.27
- julia - Julia中分组列的多个汇总统计信息
- javascript - 请在 css、javascript、active web 上帮助我
- c# - c#动态事件订阅和退订