当前位置:   article > 正文

gcc: string.c_str gcc-8.5的一个问题

gcc: string.c_str gcc-8.5的一个问题

文章目录

参考

https://en.cppreference.com/w/cpp/string/basic_string/c_str
https://sourceforge.net/p/cppcheck/wiki/ListOfChecks/

  • common mistakes when using string::c_str()

问题

string的这个成员是返回c类型的一个字符数组指针。但是这个指针所对应的地址有赖于string对象的生命周期。所以如果返回一个函数内的局部string对象的指针,就是危险的。如果是危险的有没有静态代码检查工具可用帮助来检查这种书写的问题。
这里需要注意的一个问题是在gcc的4.8版本是可用隐藏这个问题,但是到了8.5这个版本,就不再隐藏了。所以对生命周期比较长的c++工程来说,这是一个非常大的挑战。因为原来这么错误使用也没有问题,那得有多少处这种错误使用呢?

      _CharT*
      _M_data() const _GLIBCXX_NOEXCEPT
      {
    return  _M_dataplus._M_p
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/956450
推荐阅读
相关标签
  

闽ICP备14008679号