基于范围的for循环中的“局部变量的地址可能会转义函数”

Cyphall

我想存储一个指向矢量元素的指针,该指针是在基于范围的for循环中选择的,所有这些都在静态上下文中显示。
但是,CLion给了我警告Address of local variable may escape the function

这是一个例子:

struct TestStruct
{
    static std::vector<std::string> _values;
    static const std::string* _selectedValue;
    
    static void selectValue()
    {
        for (const std::string& value : _values)
        {
            if (value == "toto")
            {
                _selectedValue = &value; // The warning is here, on the "&value" part.
            }
        }
    }
};

static但是,删除三个关键字时,警告消失。

当我运行静态和非静态版本时,在两种情况下都可以正常工作,因为for循环使用对元素的引用。

为什么此警告出现在静态版本中?
关于静态变量的生存期是否有什么特别之处,可能使其无法正常工作?

尼古拉·迪米特洛夫(Nikola Dimitroff)

该代码没有任何问题,因为它代表了对象生命周期。

CLion不是万能的-它不知道您的意图是什么。它所知道的是,您正在将局部变量(value的地址存储在静态var中,因此完全可以警告您“局部变量的地址可能会逸出函数”。这是否是一个问题,取决于您的意图,并且如代码所示,它看起来还不错。

我要提到的是,您在使用此结构时需要格外小心,因为向量的大多数修改都会导致指针开始指向另一个元素或无效的内存。通常,除非您在程序开始时对向量中的数据进行初始化并在退出程序之前将其关闭,而不进行任何临时更改,否则此代码非常容易出错。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基于范围的for循环中的“局部变量的地址可能会转义函数”

来自分类Dev

增强的for循环中局部变量的范围

来自分类Dev

增强的for循环中局部变量的范围

来自分类Dev

函数中的局部变量将在循环中多次运行

来自分类Dev

函数中的局部变量将在循环中多次运行

来自分类Dev

警告:函数返回局部变量的地址

来自分类Dev

锈期货::选择循环中修改局部变量

来自分类Dev

Python - UnboundLocalError:在循环中赋值之前引用的局部变量

来自分类Dev

循环中的数组可能会丢失精度错误

来自分类Dev

buf(主函数中的局部变量)的地址是什么?

来自分类Dev

函数返回c中局部变量的地址

来自分类Dev

分配对局部变量的引用,如果局部变量超出范围,会超出范围吗?

来自分类Dev

函数内部局部变量的生命周期(内存范围)

来自分类Dev

在 for 循环内调用自身(函数),并更改局部变量

来自分类Dev

JS for循环中的局部变量到全局变量,循环结束后更改值

来自分类Dev

转义对局部变量的引用

来自分类Dev

访问函数局部变量

来自分类Dev

循环内或循环外的局部变量

来自分类Dev

Java在循环中使用getter还是创建局部变量?

来自分类Dev

从while循环中更改f字符串局部变量?

来自分类Dev

使用局部变量为循环中的元素设置onclick方法,而无需立即激活它

来自分类Dev

在foreach循环中出现“使用未分配的局部变量”错误,并返回收益

来自分类Dev

在while循环中使用最终局部变量时出现不同的编译错误

来自分类Dev

如何在循环中使用 Func 或 Action 而不是局部变量?

来自分类Dev

在没有局部变量访问的情况下继续在 for 循环中附加 [to stream]

来自分类Dev

Powershell:基于局部变量的条件标志

来自分类Dev

枚举常量中局部变量的范围

来自分类Dev

枚举常量中局部变量的范围

来自分类Dev

Python关闭,局部变量范围错误

Related 相关文章

  1. 1

    基于范围的for循环中的“局部变量的地址可能会转义函数”

  2. 2

    增强的for循环中局部变量的范围

  3. 3

    增强的for循环中局部变量的范围

  4. 4

    函数中的局部变量将在循环中多次运行

  5. 5

    函数中的局部变量将在循环中多次运行

  6. 6

    警告:函数返回局部变量的地址

  7. 7

    锈期货::选择循环中修改局部变量

  8. 8

    Python - UnboundLocalError:在循环中赋值之前引用的局部变量

  9. 9

    循环中的数组可能会丢失精度错误

  10. 10

    buf(主函数中的局部变量)的地址是什么?

  11. 11

    函数返回c中局部变量的地址

  12. 12

    分配对局部变量的引用,如果局部变量超出范围,会超出范围吗?

  13. 13

    函数内部局部变量的生命周期(内存范围)

  14. 14

    在 for 循环内调用自身(函数),并更改局部变量

  15. 15

    JS for循环中的局部变量到全局变量,循环结束后更改值

  16. 16

    转义对局部变量的引用

  17. 17

    访问函数局部变量

  18. 18

    循环内或循环外的局部变量

  19. 19

    Java在循环中使用getter还是创建局部变量?

  20. 20

    从while循环中更改f字符串局部变量?

  21. 21

    使用局部变量为循环中的元素设置onclick方法,而无需立即激活它

  22. 22

    在foreach循环中出现“使用未分配的局部变量”错误,并返回收益

  23. 23

    在while循环中使用最终局部变量时出现不同的编译错误

  24. 24

    如何在循环中使用 Func 或 Action 而不是局部变量?

  25. 25

    在没有局部变量访问的情况下继续在 for 循环中附加 [to stream]

  26. 26

    Powershell:基于局部变量的条件标志

  27. 27

    枚举常量中局部变量的范围

  28. 28

    枚举常量中局部变量的范围

  29. 29

    Python关闭,局部变量范围错误

热门标签

归档